C语言深度解剖——读书笔记-1、关键字
来源:互联网 发布:s7edge怎么关闭4g网络 编辑:程序博客网 时间:2024/06/10 08:27
0.0 、32个关键字:
auto、short、int、long、char、float、double(6中基本数据类型)、signed、unsigned、struct、union、enum、static、register、const、volatile、typedef、sizeof、extern、return、void、do、while、if、else、for、goto、switch、case、default、break、continue。
注意:define、include这些带#号的都不是关键字,是预处理指令。
关键字意义 static
声明静态变量const声明只读变量volatile
说明变量在程序执行中可被隐含地改变sizeof计算对象所占内存空间大小
0.1、定义与声明
定义 就是(编译器)创建一个对象并为这个对象分配内存,并给它取上一个名字。 如:int i;
声明 是告诉编译器,在程序中有这么一个对象,但不给它分配内存。 如:extern int i;
声明有2重含义:
1.告诉编译器,这个变量名已匹配到一块内存上,下面代码用到的变量或对象是在别的地方定义的。声明可以出现多次;
2.告诉编译器,这个变量名已被预订了,别的地方再也不能用它来作为变量名或对象名。(比如:图书馆的占座,在说面放本书---声明这个座位已有人预订)
1.2 最快的关键字:register
对于register这个关键字定义的变量,不能进行取地址运算(&),因为对于x86架构来说,地址都是在内存中的,不是在寄存器中的,所以对寄存器进行取地址是没有意义的。并且应该注意的是给register定义的变量,应该赋一个比寄存器大小 要小的值。
注意:register只是请求寄存器变量,但是不一定申请成功。
1.3 最名不符实的关键字——static
#include <stdio.h>static int j;void fun1(void){static int i = 0;i++;printf("%d", i);}void fun2(void){j = 0;j++;}int main(void){int k = 0;for(k = 0; k < 10; k++){fun1();fun2();}printf("%d", j);return 0;}
(一)经常被人误认为是函数
sizeof是关键字不是函数,下面我们利用编译器来证明它的“清白”---验身!看下面例子:
int i =0
A. sizeof ( int ) ; B.sizeof (i) ; C.sizeof int ; D.sizeof i ;
在32位系统下A、B 的值为:4 ,那么C的值呢? D的值呢?
在32为系统下,通过Visual C ++ 6.0 或任意编译器调试,D的结果为4,没有括号居然也行!而函数名后面没有括号是不行的,所以证明:sizeof 真的不是函数耶!
再看C编译器提示出错,sizeof int 表示什么?明显不正确,我们可在 int 前加unsigned 、 const等关键字,但不能加sizeof.
【记住:sizeof 在计算变量所占的空间大小时,括号可以省略,如:sizeof i;而计算类型(模子)大小时不能省略:sizeof (int)】
#include <stdio.h> void fun(int b[100]) { printf("sizeof(b) is %d\n",sizeof(b)); <span style="font-family: Arial, Helvetica, sans-serif;"> </span>
int main(void) { int *p=NULL; int a[100]; int b[100]; printf("sizeof(p) is %d\n",sizeof(p)); 4 printf("sizeof(*p) is %d\n",sizeof(*p)); 4 printf("sizeof(a[100]) is %d\n",sizeof(a[100])); 4 printf("sizeof(a) is %d\n",sizeof(a)); 400 printf("sizeof(&a) is %d\n",sizeof(&a)); 4 printf("sizeof(&a[0] is %d\n",sizeof(&a[0])); 4 fun(b); 4 return 1; }
- C语言深度解剖——读书笔记-1、关键字
- C语言深度解剖——读书笔记-2、关键字
- 读书笔记《c语言深度解剖》(1)
- [转]读书笔记《c语言深度解剖》(1)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖读书笔记(1.关键字的秘密)
- C语言深度解剖——读书笔记(数组和指针)
- C语言深度解剖——读书笔记-4、符号
- C语言深度解剖——读书笔记-5、预处理
- C语言深度解剖——读书笔记-6、预处理
- C语言深度解剖——读书笔记-12、内存管理
- C 语言深度解剖 读书笔记
- TCP/IP概述
- hdu 5290 Bombing plan(树形dp)
- 剑指offer面试题36数组中的逆序对数
- 1004:Let the Balloon Rise
- CXF开发RESTFUL的实例练习
- C语言深度解剖——读书笔记-1、关键字
- I2C通信一般性问题
- Android -- 绑定服务
- poj 3365 数学分类(最大的圆柱体积)
- mongodb索引
- HDU doing homework again
- zoj 3874 Permutation Graph (cdq分治+NTT)
- Deep Learning for Nature Language Processing --- 第八讲
- UVALive 6661 Equal Sum Sets