1. 打印地址:printf("address of value2: %p\n", &value2);

  2. C99 支持VLA(可变长数组),C11 放弃了这一创新的举措,把VLA设定为可选,而不是语言必备的特性

  3. int *ar形式和int ar[]形式都表示ar是一个指向int的指针。但是,int ar[]只能用于声明形式参数。第2种形式(int ar[])提醒读者指针ar指向的不仅仅一个int类型值,还是一个int类型数组的元素。

  4. 函数声明,函数原型,函数定义 的区别。

  5. 如果指向两个不同数组的指针进行求差运算可能会得出一个值,或者导致运行时错误。

  6. 在K&R C的年代,避免类似错误的唯一方法是提高警惕。ANSI C提供了一种预防手段。如果函数的意图不是修改数组中的数据内容,那么在函数原型和函数定义中声明形式参数时应使用关键字const。

  7. 把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的;只能把非const数据的地址赋给普通指针

  8. 一维数组名 表示一个指针,表示一个指向int的指针

 

printf()格式化输出

 

字符 说明
%p 指针地址
%u 无符号十进制整数(unsigned int)

 

关键字:

全局变量:

static:

目的是不用反复出栈,提高效率。

静态局部变量

和临时变量一样,但退出该函数后, 尽管该变量还继续存在,但不能使用它。

静态全局变量:

 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。

静态函数:

内部函数

auto: 默认存在,表示临时变量。

extern:同一文件中 告诉编译器num这个变量是存在的,但是不是在这之前声明的;引用不在同一个文件中的变量(全局)或者函数;引用另一个文件中的函数(不需要头文件包含?)。

register:寄存器变量,读取非常快  

 

void *memsetvoid *dest, int ch, size_t count );

void * malloc(size_t size)

void *reallocvoid *ptr, size_t new_size )

相关文章: