第7章指针
第7章 指 针
7,1指针的基本概念 7.2指针变量 73数组与指钍 74字符串与指钍 75指针数组与指向指针的指钍 7.6函数与指针 7,7程序举例
7.1 指针的基本概念 7.2 指针变量 7.3 数组与指针 7.4 字符串与指针 7.5 指针数组与指向指针的指针 7.6 函数与指针 7.7 程序举例
71指针的基本概念 (1)直接存取 所谓直接存取,是指在程序执行过程中需要存取变 量值时,直接存取变量所占内存单元中的内容。 (2)间接存取 所谓间接存取,是指为了要存取一个变量值,首先 从存放变量地址的指针变量中取得该变量的存储地址, 然后再从该地址中存取该变量值。 没回日录
7.1 指针的基本概念 (1)直接存取 所谓直接存取,是指在程序执行过程中需要存取变 量值时,直接存取变量所占内存单元中的内容。 (2)间接存取 所谓间接存取,是指为了要存取一个变量值,首先 从存放变量地址的指针变量中取得该变量的存储地址, 然后再从该地址中存取该变量值
在C语言中,用符号“*”表示“指向”,反映指针 变量与它所指的变量之间的联系: (1)在变量类型说明中,变量前加“*”用于区别 于普通变量。 (2)在表达式中,变量前加“*”表示间接访问
在C语言中,用符号“*”表示“指向”,反映指针 变量与它所指的变量之间的联系: (1)在变量类型说明中,变量前加“*”用于区别 于普通变量。 (2)在表达式中,变量前加“*”表示间接访问
7.2指针变量 72.1指针变量的定义与引用 变量的指针就是变量的地址,即指针变量用于存放变 量的地址(即指向变量) 定义指针变量的一般形式为 类型标识符*指针变量名; 没回日录
7.2 指针变量 7.2.1 指针变量的定义与引用 变量的指针就是变量的地址,即指针变量用于存放变 量的地址(即指向变量)。 定义指针变量的一般形式为 类型标识符 *指针变量名;
下面对指针变量作几点说明 (1)指针变量名前的“*”表示该变量为指针变量,而指针 变量名不包含该“”。 (2)一个指针变量只能指向同一类型的变量 (3)指针变量中只能存放地址,而不能将数值型数据赋给 指针变量 (4)只有当指针变量中具有确定地址后才能被引用。 (5)与一般的变量一样,也可以对指针变量进行初始化
下面对指针变量作几点说明: (1)指针变量名前的“*”表示该变量为指针变量,而指针 变量名不包含该“*” 。 (2)一个指针变量只能指向同一类型的变量。 (3)指针变量中只能存放地址,而不能将数值型数据赋给 指针变量。 (4)只有当指针变量中具有确定地址后才能被引用。 (5)与一般的变量一样,也可以对指针变量进行初始化
722指针变量作为函数参数 与普通变量一样,指针变量也可以作为函数参数。利 用指针变量作为函数的形参,可以使函数通过指针变量返 回指针变量所指向的变量值,从而实现函数调用函数与被 调用函数之间数据的双向传递 在用指针变量作为函数形参时,其实参也应为指针变 量
7.2.2 指针变量作为函数参数 与普通变量一样,指针变量也可以作为函数参数。利 用指针变量作为函数的形参,可以使函数通过指针变量返 回指针变量所指向的变量值,从而实现函数调用函数与被 调用函数之间数据的双向传递。 在用指针变量作为函数形参时,其实参也应为指针变 量
例72利用指针变量实现两个变量值的互换 其C程序如下: #include stdio. h" swap(pl, p2) int *pl,p2 i int t; p1; 02=t; return; mainO f int a, b scanf(%d, %d", &a,&b); printf("a=%od, b=%dn", a, b); Swa p(&a,&b); printf("a=%d, b=%dn", a, b);
例7.2 利用指针变量实现两个变量值的互换。 其C程序如下: #include "stdio.h" swap(p1,p2) int *p1, *p2; { int t; t=*p1;*p1=*p2;*p2=t; return; } main() { int a, b; scanf("%d,%d",&a,&b); printf("a=%d,b=%d\n",a,b); swap(&a,&b); printf("a=%d,b=%d\n",a,b); }
73数组与指针 73.1数组的指针与数组元素的指针 所谓数组的指针是指数组的首地址。数组元素的指 针是指数组元素的地址。因此,同样可以用指针变量来 指向数组或数组元素。 没回日录
7.3 数组与指针 7.3.1 数组的指针与数组元素的指针 所谓数组的指针是指数组的首地址。数组元素的指 针是指数组元素的地址。因此,同样可以用指针变量来 指向数组或数组元素
例7.3下列C程序是从键盘为数组元素输入数据 #include 'stdio. h'r mainO int a 10], i; for(i=0;i<10;i=i+1) scanf(%d",&aiD; printf("n"); for(i=0;i<10;i=i+1) printf("%5dn,aiD);
例7.3 下列C程序是从键盘为数组元素输入数据: #include "stdio.h" main() { int a[10],i; for (i=0;i<10;i=i+1) scanf("%d",&a[i]); printf("\n"); for (i=0;i<10;i=i+1) printf("%5d\n",a[i]); }