C语言的关键字有很多,要说最不常见的,我觉得应该是auto。 说它不常见,因为很多时候,我们都把它给省略了。 比如在函数内部定义变量a,正常人都会这样写:
void function() { int a; }很少有人会在前面加一个auto:
void function() { auto int a; }其实这两种写法是等价的,严谨一点,在C语言中是等价的。 那auto关键字是不是鸡肋般的存在? auto声明的变量我们把它称作自动变量,所谓自动变量,就是定义的时候自动分配内存,函数运行结束后内存自动释放,所以你完全可以把它理解成局部变量。 它的作用跟static正好相反,static修饰的变量因为存放在静态数据区,所以即使函数调用结束了,变量也不会被释放。
void function() { static int num = 0; num++; printf("num = %d ", num); } int main() { int i; for (i = 0; i < 3; i++) { function(); } return 0; }我觉得auto存在的意义,可能就是跟static静态变量、register寄存器变量、extern外部变量区分开。
auto int num = 0; //错误 int main() { return 0; }第二个,在C语言中,使用auto声明的变量可以没有类型,比如直接来个auto a,编译器会自动把a当作整型数据。
int main() { auto a; }编译结果:
root@Turbo:test# gcc test.c -o test test.c: In function ‘main’: test.c:5:7: warning: type defaults to ‘int’ in declaration of ‘a’ [-Wimpli cit-int] 5 | auto a; | ^ root@Turbo:test#第三个,在C++中,auto是一个类型说明符,编译器可以通过初始化的结果来判断变量的类型,前提是变量一定得初始化,否则就会报错。
int main() { autoa=1.1;//编译器判断a的类型为double return 0; }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7551浏览量
131877 -
变量
+关注
关注
0文章
599浏览量
28175
原文标题:C语言最鸡肋的关键字
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
inline关键字被优化导致此类函数被布局在flash内,怎么处理?
问题解决。
但是,希望乐鑫官方把idf内源码中的inline关键词都替换为__attribute((always_inline)),因为inline关键字不可靠!
期待下次idf版本更新能解决此bug,自己修改idf源码真的是权宜之计、临时之策。
发表于 06-21 12:03
在NVM和本地\"内存中定义数组(静态 /global /local)的\"关键字是什么?
在 NVM 和本地\"内存中定义数组(静态 /global /local)的\"关键字是什么? 还有与 32 位对齐的关键字怎么样。
发表于 01-25 07:52
你还记得这个C语言关键字吗?
当你使用volatile关键字时,你告诉编译器该变量的值可能会在程序的执行过程中被外部因素更改,因此编译器不应该对该变量的读写进行优化。下面是一些使用volatile的例子,以及对它们的一些文字描述
![你还记得这个C<b class='flag-5'>语言</b><b class='flag-5'>关键字</b>吗?](https://file.elecfans.com/web2/M00/09/16/pYYBAGD0FvWAeWpFAAAb1Fux1oA753.jpg)
this关键字在Java中的用法
this 关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。 其实简单来说 this 关键字就是表示当前对象,下面我们来具体介绍 this 关键字在Java中的用法。 1、调用成员变量
![this<b class='flag-5'>关键字</b>在Java中的用法](https://file1.elecfans.com/web2/M00/A7/96/wKgaomUlDqeAMS7UAAAkWZJUVpo316.jpg)
如何使用机器学习在M480上执行关键字识别
应用程序: 本样本代码使用机器学习来在 M480 上执行关键字识别。
BSP 版本: M480系列 BSP CMSIS V3.04.000
硬件: NuMaker-PFM-M487 VER 3.0
发表于 08-29 06:46
使用机器学习在M480上执行关键字识别
应用程序: 本样本代码使用机器学习来在 M480 上执行关键字识别。
BSP 版本: M480系列 BSP CMSIS V3.04.000
硬件: NuMaker-PFM-M487 VER 3.0
发表于 08-22 08:02
![](https://file.elecfans.com/web2/M00/B1/60/poYBAGTAunqAVpnVAADaBwCGKfA355.png)
评论