1.1 指针和内存,C程序在编译后,会以三种形式使用内存。
(1) 静态/全局内存:在程序开始时分配,程序结束才消失,所有函数都能访问全局变量,static静态变量的作用域局限在定义它们的函数内部
(2)自动内存:在函数内部声明,函数被调用才创建,函数结束就消失。
(3)动态内存:内存分配到堆上,直到释放才会消失。malloc指针分配的内存,作用域局限于引用内存的指针。
1.1.3 简单阅读声明:将声明倒过来读
//指向const类型的指针,指针内容可以修改,指向的内容不能修改 const int* p; int const* p; //const指针,指针内容不可修改,指向内容可以修改,必须要初始化 int* const p = &xxx; //指针和指向内容都不可以修改,必须要初始化 int const* const p = &xxx; const int* const p = &xxx;
1.1.8 NULL的概念
#define NULL ((void *) 0 )
//NULL宏是强制类型转换为void执政的整数常量0 int* p; p = 0; p = NULL; p = 100; //语法错误 p = num;//语法错误