文档介绍:1
第8章指针(pointer)
什么是指针
指针变量
通过指针引用数组
通过指针引用字符串
指向函数的指针
返回指针值的函数
指针数组和多重指针
动态分配内存
2
3
指针是C语言中的一个重要的概念,也是C语言的一个重要特色。
可以干什么?
可以表示复杂的数据结构;
能动态分配内存;
能更加方便、有效地使用数组和字符串;
调用函数时能得到多于1个的返回值;
能直接处理内存地址等。
这对设计系统软件是很必要的。掌握指针的应用,可以使程序简洁、紧凑、高效。
什么是指针
如果在程序中定义了一个变量,在对程序进行编译时,系统就会给该变量分配内存单元
编译系统根据程序中定义的变量类型,分配一定长度的空间
例如,VC++为整型变量分配4个字节,对单精度浮点型变量分配4个字节,对字符型变量分配1个字节
4
内存区的每一个字节有一个编号,这就是“地址”,它相当于旅馆中的房间号。
在地址所标识的内存单元中存放数据,这相当于旅馆房间中居住的旅客一样。
由于通过地址能找到所需的变量单元,我们可以说,地址指向该变量单元。
将地址形象化地称为“指针”
5
务必弄清楚存储单元的地址和存储单元的内容这两个概念的区别
例如:
6
int i=3,j=6,k;
printf(“%d”,i);
通过变量名i
找到i的地址2000,从而从存储单元读取3
7
int i=3,j=6,k;
k=i+j;
从这里取3
将9送到这里
从这里取6
直接存取
8
int i=3,j=6,k;
定义特殊变量i_pointer
将i的地址存到这里
间接存取
i_pointer=&i;
*i_pointer=50;
50
9
i
2000
3
2000
i_pointer
*i_pointer(i)
2000
3
直接存取
间接存取
10