C语言深度剖析笔记

发布 2021-05-12 01:26:28 阅读 5061

1.register声明寄存器变量○

2.v○olatile可能隐含的被改变,每次使用它时必须从内存中取出。3.sizeof○计算对象所占内存空间大小,是在编译的时候确定声明的两重含义:

1这个名字已经匹配到一块内存上去了。○

2这个名字我先预定义了。○

switch case:

1case后面只能是整型或字符型的常量或常量表达式,○

for、while:

1for多用于事先知道循环次数的情况。○

const:

1编译器通常不为普通const只读变量分配存储空间。而将它们保存在符号表中,这使它成○

为一个编译期间的值。#define:

#define宏常量在预编译阶段进行简单替换,○

注释先于预处理指令被处理;

代表当前目录,..代表上级目录:#pragma预处理命令。

#pragma message(“xxx”)在编译输出窗口中将消息文本打印出来。○

#pragma code_seg能够设置程序中函数**存放的**段;○

#define sqr(x) printf(“the square of“#x”is %d”, x)*(x)))

sqr(8)输出:the square of8is 64

int a[5]:

1a[0],a[1],a[n],并非元素的名字,而是a的元素,a才是这块内存的名字并与这块内存匹配;○&a[0],&a:

1前者是数组首元素的首地址,后者是数组的首地址。○

2我们只能访问数组的某个元素而无法把数组当一个总体进行访问。○

指针形式:*(p+4):先取出p里存储的地址值,然后加上4个偏移最后取出该地址上的值下标形式:p[4]:编译器总是把以下标的不标的形式解析为以指针的形式操作。

a+1:1取数组a的首地址,○该地址的值加上sizeof(a)的值,即&a+5*sizeof(int),也就是下一个数组的首地址,显然当前指针已经越过的数组的界限。

void* malloc(int):

1如果申请失败返回空,所申请的内存块不是所有剩余内存块之和,因为malloc函数申请○

的是连续的一块内存。

C语言深度剖析笔记

123定义声明最重要的区别 定义创建了对象并为这个对象分配了内存,声明没有分配内存。编译器在缺省的情况下,所有变量都是auto的。最快的关键字 register 改关键字请求编译器尽可能将变量存在cpu内部寄存器中 而非通过内存寻址访问 以提高效率。只是尽可能而非绝对。限制 register变量必须...

C语言笔记

第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...

C语言笔记

c语言算法和数据类型。整型。基本类型 字符型注释 基本类型的特点是其不可实型 单精度型以再分解为其他类型双精度型数组型。数据结构 构造型 结构体型共用体型指针型空类型。一 常量。define 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...