内容正文:
第8章 善于利用指针
第8章 善于利用指针
8.1 指针是什么
8.2 指针变量
8.3 通过指针引用数组
8.4 通过指针引用字符串
8.5 指向函数的指针
8.6 返回指针值的函数
8.7 指针数组和多重指针
8.8 动态内存分配与指向它的指针变量
8.9 有关指针的小结
8.1 指针是什么
如果在程序中定义了一个变量,在对程序进行编译时,系统就会给该变量分配内存单元
编译系统根据程序中定义的变量类型,分配一定长度的空间
例如,VC++为整型变量分配4个字节,对单精度浮点型变量分配4个字节,对字符型变量分配1个字节
8.1 指针是什么
内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。
在地址所标识的内存单元中存放数据,这相当于旅馆房间中居住的旅客一样。
由于通过地址能找到所需的变量单元,我们可以说,地址指向该变量单元。
将地址形象化地称为“指针”
务必弄清楚存储单元的地址和存储单元的内容这两个概念的区别
例如:
int i=3,j=6,k;
printf(“%d”,i);
通过变量名i
找到i的地址2000,从而从存储单元读取3
int i=3,j=6,k;
k=i+j;
从这里取3
将9送到这里
从这里取6
直接存取
int i=3,j=6,k;
定义特殊变量i_pointer
将i的地址存到这里
间接存取
i_pointer=&i;
*i_pointer=50;
50
i
2000
3
2000
i_pointer
*i_pointer
2000
3
直接存取
间接存取
为了表示将数值3送到变量中,可以有两种表达方法:
(1) 将3直接送到变量i所标识的单元中,例如:i=3;
(2) 将3送到变量i_pointer所指向的单元(即变量i的存储单元),例如:*i_pointer=3; 其中*i_pointer表示i_pointer指向的对象
指向就是通过地址来体现的
假设i_pointer中的值是变量i的地址(2000),这样就在i_pointer和变量i之间建立起一种联系,即通过i_pointer能知道i的地址,从而找到变量i的内存单元
由于通过地址能找到所需的变量单元,因此说,地址指向该变量单元
将地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元
一个变量的地址称为该变量的“指针”
例如,地址2000是变