- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言的一些误用及知识总结
C语言的一些误用和知识总结
在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用还有很多地方呢,呵呵我们这里就不讨论这个了。我们是不是在写程序的时候错误很多就算编译通过了也达不到我们预期的结果,完了自己是不是也很难找到错在哪儿吧?我绝得语言之所以能称之为语言,它肯定是一种工具一种相互交流相互通信相互传达之间的意图的工具,作为语言那肯定得有自己的语法,要想相互交流肯定得先学好它的语法吧(比如像表达式,函数,循环,指针)我称之为C语言的语法。C语言虽然很强大但是他也有不少陷阱,所以我发这篇博客有两个目的一是:把C语言一些误用易错的地方总结一下,二是把C语言一些基本语法总结一下~
第一次:
1.关于自增自减(即++i,i++)
要想给一个数加一或减一我们可以:
i += 1;
j -= 1;
而C语言还允许用++和--运算符,其实这里有误导,因为++和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:
i = 1;
printf(i is %d\n,++i); /* prints i is 2 */
printf(i is %d\n,i); /* prints i is 2 */
计算表达式i++的结果是i,但是会引发i随后进行自增:
i = 1;
printf(i is %d\n,i++); /* prints i is 1/ */
printf(i is %d\n,i); /* prints i is 2 */
第一个printf 显示了i自增前的原始值,第二个printf显示了i变化后的新值;当然 -- 类似我就不举例了~
但在同一个表达式中多次使用++和--往往很难理解我们看看下面的例子:
i = 1;
j = 2;
k = ++i + j++;
i,j,k最终值分别是2,3,4而++i是2 j++是2;
总结:不管是++i还是i++执行这条语句后i的值都加一了只是(++i)的值加一了而(i++)没变,
2.typedef与#define
2.1.typedef
C语言除了直接使用标准的类型名(如 int char float double)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替现有的类型名。
typedef unsigned char u8;
typedef unsigned int u16;
u8 count;
u16 time;
typedef struct
{
u8 month;
u8 day;
u16 year;
}DATE;
DATE brithday;
总结一下,声明新的类型名的方法:
1.先按定义变量的方法写出定义体(如 unsigned int i)
2.在变量名换成新的变量名(如将 i换成u16)
3.在最前面加上typedef (typedef unsigned int u16)
4.然后用新类型名去定义变量
2.2 #define
2.1.1不带参数的宏定义
#define 标识符 字符串
#define PI 3.1415926
注意:
1.它的作用是在本程序中用指定的标识符PI来代替3.1415926
2.宏定义是用宏来代替字符串也就是做简单的置换,不做正确性检查如果写成
#define PI 3.l4l6926
即把1写成了字母l但是预处理照常代入不做任何语法检查!!
2.1.2带参数的宏定义
#define 宏名(参数) 字符串
#define S(a,b) a*b
area = S(a,b);
#define MAX(x,y) (x)(y) ? (x):(y)
3.typedef和#define的区别
一般来说typedef 因为它能正确处理指针类型
typedef char *String1;
#define String2 char *
String1 s1,s2;
String2 s3,s4;
s1,s2,s3 被定义为了char* 但s4却被定义为了char型
3. static 变量
static变量大致分为三种用法
1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.
2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用.
3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象
1. 静态局部变量
静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以
您可能关注的文档
最近下载
- 居间助贷代理合同协议.docx VIP
- 塑料制品 挥发性有机化合物和半挥发性有机化合物的测定 热脱附气相色谱质谱法.docx VIP
- 最新CQI-27铸造系统评估表 第二版(2023).XLSX VIP
- (推荐!)GB 45673-2025《危险化学品企业安全生产标准化通用规范》之“5.2 安全生产责任制”审核检查单(2025A0).docx VIP
- NB∕T 32037-2017 光伏发电建设项目文件归档与档案整理规范.pdf VIP
- 个人房屋租赁合同范本(免费)最新.pdf VIP
- 无刷伺服驱动器XVy-EV 中文说明书.pdf
- 实施指南《GB15979 - 2002一次性使用卫生用品卫生标准》实施指南.pptx VIP
- 医院培训课件:《PICC置管与护理》.pptx
- 个人收入证明模版word编辑版.doc VIP
文档评论(0)