网易首页 > 网易号 > 正文 申请入驻

一个带你了解一下,C语言的一些错误用法

0
分享至

\\\插播一条:

自己在今年整理一套单片机单片机相关论文800余篇

论文制作思维导图

原理图+源代码+开题报告+正文+外文资料

想要的同学私信找我。

C语言的一些误用和知识总结

在进修单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一局部他的应用还有很多地方呢,呵呵我们这里就不探讨这个了。我们是不是在写程序的时候错误很多就算编译通过了也达不到我们预期的结果,完了自己是不是也很难找到错在哪儿吧?我绝得语言之所以能称之为语言,它肯定是一种工具一种互相交流互相通信互相传达之间的意图的工具,作为语言那肯定得有自己的语法,要想互相交流肯定得先学好它的语法吧(假如像表达式,函数,循环,指针)我称之为C语言的语法。C语言虽然很强大但是他也有不少陷阱,所以我发这篇博客有两个目标一是:把C语言一些误用易错的地方总结一下,二是把C语言一些根本语法总结一下~

第一次:

1.关于自增自减(即++i,i++)

要想给一个数加一或减一我们能够:

i += 1;

j -= 1;

而C语言还允许用++和--运算符,其实这里有误导,由于++和--能够作为前缀和后缀,这样的话他们就有可能变更操作数的值,下面让我们来看看:

i = 1;

【文章福利】:小编整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~点击绿色通讯软件搜索airuimcu加入。

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++)没变,

1.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来代替三.1415926

2.宏定义是用宏来代替字符串也就是做简略的置换,不做正确性检查假如写成

#define PI 三.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)

三.typedef和#define的差别

一般来说typedef 由于它能正确处理指针类型

typedef char *String1;

#define String2 char *

String1 s1,s2;

String2 s3,s4;

s1,s2,s3 被定义为了char* 但s4却被定义为了char型

三. static 变量

static变量大致分为三种用法

1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.

2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用.

3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象

1. 静态局部变量

静态局部变量属于静态存储方式,它具有以下特点:

(1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内运用该变量。退出该函数后, 只管该变量还继续存在,但不能运用它。

(2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以0值。

(3) 对根本类型的静态局部变量若在证明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 依据静态局部变量的特点, 能够看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能运用,但如再次调用定义它的函数时,它又可继续运用, 而且保存了前次被调用后留下的值。 因此,当屡次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也能够到达上述目标,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

举例如下:

void fun()

static int a = 1;

a++;

在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1,以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作;在static创造前,要到达同样的功能,则只能运用全局变量:

int a = 1;

void fun()

a++;

2.静态全局变量

全局变量(外部变量)的之前再加上static 就构成了静态的全局变量。全局变量自身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并没不同。这两者的差别虽在于,非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能运用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此能够避免在其它源文件中引起错误。从以上分析能够看出, 把局部变量变更为静态变量后是变更了它的存储方式即变更了它的生存期。把全局变量变更为静态变量后是变更了它的作用域, 限制了它的运用范围。因此static 这个证明符在不同的地方所起的作用是不同的。

3.static的类成员变量

static重要关键字有两种意思,你看高低文来判断

1.表示变量是静态存储变量,表示变量寄存在静态存储区.

2.

表示该变量是内部连接(这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上static),也就是说在其它的.cpp文件中,该变量是不可见的(你不能用).

2、static 函数 —— 内部函数和外部函数

当一个源程序由多个源文件组成时,C语言依据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

1 内部函数(又称静态函数)

假如在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。

定义一个内部函数,只需在函数类型前再加一个“static”重要关键字即可,如下所示:

static 函数类型 函数名(函数参数表)

重要关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。

运用内部函数的益处是:不同的人编写不同的函数时,不用担忧自己定义的函数,是否会与其它文件中的函数同名,由于同名也没相关系。

2 外部函数

外部函数的定义:在定义函数时,假如没有加重要关键字“static”,或冠以重要关键字“extern”,表示此函数是外部函数:

[extern] 函数类型 函数名(函数参数表)

调用外部函数时,须要对其进行证明:

[extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……];

“入门既不难,深造也是办得到的”,只有你有恒心、有决心,跟随我们的“连载”一步步走下去,将来就一定能在魅力的电子世界里遨游。

更多C语言 C++、JAVA、数电模电、51单片机、PIC stm32 ARM Linux驱动 嵌入式、安卓系统 FPG

想要学习单片机的朋友 ,做毕业设计的同学,关注我们,口令一哥,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

-END-

*本文系网络转载,版权归原作者所有,如有侵权请联系删除

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
连续向中国求援,泽连斯基放话:中国必须护乌,白纸黑字签过文件

连续向中国求援,泽连斯基放话:中国必须护乌,白纸黑字签过文件

通文知史
2024-06-03 18:00:02
乌军在俄罗斯库尔斯克摧毁俄军纵队,武器限制解除首日俄军被重创

乌军在俄罗斯库尔斯克摧毁俄军纵队,武器限制解除首日俄军被重创

山河路口
2024-06-02 19:46:59
自适应大灯可更好地照亮弯道,特斯拉发布 2024.20 软件更新

自适应大灯可更好地照亮弯道,特斯拉发布 2024.20 软件更新

IT之家
2024-06-04 08:18:26
在看什么呢?皇马官宣姆巴佩后,本泽马晒看手机微笑照

在看什么呢?皇马官宣姆巴佩后,本泽马晒看手机微笑照

直播吧
2024-06-04 11:09:24
8分4板4帽!中国男篮17岁长臂2米30天才发威,新阿联未来进NBA?

8分4板4帽!中国男篮17岁长臂2米30天才发威,新阿联未来进NBA?

李喜林篮球绝杀
2024-06-04 09:57:37
朱婷遭弃用意大利主帅早有预见,给蔡斌加个国际级主攻女排还那样

朱婷遭弃用意大利主帅早有预见,给蔡斌加个国际级主攻女排还那样

室内设计师阿喇
2024-06-03 21:03:13
陌生女子进店称儿媳生下双胞胎,让拿30块沾喜气,店主:莫名其妙

陌生女子进店称儿媳生下双胞胎,让拿30块沾喜气,店主:莫名其妙

看晓天下事
2024-06-03 13:30:58
辽宁“老虎”大肆买官:花2200万买市委书记,却不料对方是骗子

辽宁“老虎”大肆买官:花2200万买市委书记,却不料对方是骗子

天闻地知
2024-06-04 09:45:44
终于来了!CBA状元内线正式离队,或加盟广东驰援杜锋?

终于来了!CBA状元内线正式离队,或加盟广东驰援杜锋?

阿牛体育说
2024-06-04 17:47:15
家长分享中学生孩子一天的作息,网友:除了不生孩子没有其他办法

家长分享中学生孩子一天的作息,网友:除了不生孩子没有其他办法

李老师讲最真教育
2024-06-03 21:41:53
胡塞武装暴打美国“艾森豪威尔”号航空母舰,创下五个第一

胡塞武装暴打美国“艾森豪威尔”号航空母舰,创下五个第一

低调看天下
2024-06-01 09:05:59
从明年开始,个人存款超过30万以上的家庭,或将面对“三大麻烦”

从明年开始,个人存款超过30万以上的家庭,或将面对“三大麻烦”

前沿天地
2024-06-04 13:09:14
庆余年 3 重磅官宣!主演告别引波澜

庆余年 3 重磅官宣!主演告别引波澜

娱乐八卦木木子
2024-06-04 18:09:11
体检查出低密度脂蛋白偏高的人,尽量少吃这几种食物

体检查出低密度脂蛋白偏高的人,尽量少吃这几种食物

医者真言
2024-06-04 16:49:14
中午12点!国际排联官宣,中国女排进军巴黎意外惊喜,蔡斌留一手

中午12点!国际排联官宣,中国女排进军巴黎意外惊喜,蔡斌留一手

宝哥精彩赛事
2024-06-04 17:38:16
王馨瑶yanni私房写真

王馨瑶yanni私房写真

白宸侃片
2024-06-04 15:38:51
听我一句劝,燃油车价格体系彻底崩了!

听我一句劝,燃油车价格体系彻底崩了!

音乐时光的娱乐
2024-06-04 12:15:43
大家发现了吗,现在很多人的生活已经完全反过来了。

大家发现了吗,现在很多人的生活已经完全反过来了。

四象八卦
2024-06-03 21:11:09
48岁“保守”已婚妇女,爱上28岁处男,答应结婚又反悔被丢河中

48岁“保守”已婚妇女,爱上28岁处男,答应结婚又反悔被丢河中

胖胖侃咖
2024-06-04 08:00:09
因机构改革,佛山一区政府部门有调整

因机构改革,佛山一区政府部门有调整

点赞佛山
2024-06-04 16:39:30
2024-06-04 19:18:44
单片机一哥
单片机一哥
喜欢关注一下,丰富单片机经验
46文章数 130关注度
往期回顾 全部

科技要闻

斯坦福团队抄袭国产大模型后道歉 承诺撤下

头条要闻

女子称逛成都太古里遭偷拍:对方手机还有多条偷拍内容

头条要闻

女子称逛成都太古里遭偷拍:对方手机还有多条偷拍内容

体育要闻

一位糖尿病患者,和他的24年皇马梦

娱乐要闻

杨幂留言为热巴庆生,姐妹情深惹人羡

财经要闻

又一座城市,房价“鹤岗化”了!

汽车要闻

2.0T+云辇-P+天神之眼 方程豹豹8还配软包内装

态度原创

艺术
手机
亲子
家居
本地

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

手机要闻

iPhone 16 Pro系列即将成为史上最窄边框手机,仅1.15mm

亲子要闻

四个月大的宝宝看到美食激动不已 使出吃奶的劲也想吃一口

家居要闻

简而不冷 明朗的治愈能量

本地新闻

我和我的家乡|踏浪营口,心动不止一夏!

无障碍浏览 进入关怀版