c语言常见的错误和误区

举报
lovevivi 发表于 2022/08/12 05:46:03 2022/08/12
【摘要】 前置++与后置++的区别与用法 以及对于static修饰的三种用法

@TOC

一、前置++与后置++

我们先看两个例题来感受下

在这里插入图片描述

第一个先来后置++,大体使用上我认为后置++的频率比前置要高

后置++ 先执行表达式 等表达式执行完后 再++

也就是先使用 后++

这里面b=a++ 可以拆分成 b=a a=a+1

而来到c的时候 a的值已经加1了 即c=11

在这里插入图片描述

b=++a 可以拆分成 a=a+1 b=a 即b=11

这里是先加加 在使用

c=a a的值已经在上面加1了 即c=11

二、static的使用

1.修饰局部变量

在这里插入图片描述

结果不难看出是 2 2 2 2 2

a属于局部变量在栈区 函数使用后就会被销毁 所以每次调用 a时

a的值都会被重置成为1 a=a+1 最终每次输出都是2


在这里插入图片描述

现在函数中的a被static修饰 成为了静态区中的

所以这次调用a的值不会随着函数调用结束而销毁

第一次a的结果为 2 依次增加1

最终结果是 2 3 4 5 6


2.修饰全局变量

在这里插入图片描述

在这里插入图片描述

extern 用来声明外部符号

定义两个源文件

当运行时 全局变量的值被打印出来

在这里插入图片描述

在这里插入图片描述

当用static修饰全局变量时 我们发现会报错

正常情况下使用外部声明(extern)就可以使用了

全局变量具有外部链接属性 ,而当用static修饰后,外部链接属性就会变成内部链接属性 其他的源文件就无法通过链接找到

即此时全局变量只能在本身源文件内部使用

3.修饰函数

在这里插入图片描述

在这里插入图片描述

这里依然定义两个源文件

找到add函数 并得出结果8


在这里插入图片描述

在这里插入图片描述

这里使用static修饰后报错

**

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。