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 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...