C语言的精华——指针的认识
1 指针的概念
0 程序是数据和指令的集合
1 程序运行时数据和指令需要占用内存空间(简称内存)。
2 内存是以字节为单位的连续的存储空间,计算机会给每个字节单元分配唯一的编号。
3 这些编号称为内存的地址,计算机利用地址来使用内存。
4 C语言定义一个变量时会给变量分配存储空间,已分配存储空间的首地址称为该变量的地址
5 地址就像是要访问存储单元的指示标,在高级语言中形象的称为指针。
6 综上:地址就是指针,指针就是地址。
2 指计变量
0 变量有三要素:变量的类型、变量的名字、变量的值。
1 如果指针存放到某个变量中,那么这个变量就叫做指针变量。
2 指针变量不等于指针,其本质是一个变量,只不过这个变量的存储的值是一个指针。
3 指针变量作为变量,同样也有三要素:指针变量的类型、指针变量的名称、指针变量的值。
4 我们习惯上会把:指针、指针变量、指针变量的类型、指针变量的名称、指针变量的值都简称为指针。
5 所以当有书上说”指针是地址、指针是一种数据类型、指针是一种特殊的变量“时,说的都对但又不全对。
3 指针变量的定义
定义指针变量与定义普通变量非常类似,不过要在变量名前面加星号*
【类型】 *标识符 , 实例如下:
int *p=NULL;
0 指针变量的【类型】是它所指向变量的类型,不是指针本身数据的类型,本身数据类型都是unsigned long int类型
1 *是类型标识符,标识后面的变量名称是一个”指针“(这里的“指针”就是上面的”指针变量名称“的缩写)
2 定义指针变量时直接初始化(可初始化为NULL),属于良好的编程习惯,否则容易产生野指针。
4 变量名到地址的变换
编译系统完成变量名到变量存储地址的转换
浙公网安备 33010602011771号