p &akey f 66 &akey q &b 66 &b
11 66 66 &akey p &akey *q=*p &b q &b
5、指针与数组 先看一个程序 ∥指针3.c #include <stdio.h> 预编译命令 void maino ∥主函数 /函数体开始 inta5={1,3,5,7,9};∥定义数组,赋初值 int“p ∥定义指针变量 int i: ∥定义整型变量 p=ai 赋值给指针变量,让p指向a数组 for(i=0;i<5;i=i+1) ∥循环体开始 printf("a|%d]=%dn"i¨p);/输出a数组元素的值 p=p+1; 指针变量加1 ∥循环体结束 函数体结束
12 // 指针3.c #include <stdio.h> //预编译命令 void main() //主函数 { //函数体开始 int a[5]={1,3,5,7,9}; //定义数组,赋初值 int *p; //定义指针变量 int i; //定义整型变量 p=a; //赋值给指针变量,让p指向a数组 for(i=0;i<5;i=i+1) { //循环体开始 printf("a[%d]=%d\n",i,*p);//输出a数组元素的值 p=p+1; //指针变量加1 } //循环体结束 } //函数体结束 5、指针与数组 先看一个程序
说明 (1)p=a;这里数组名作为数组的起始地址,即a|0的地址。 因此p=a等效于p=&a|0 >(2)p=p+1;如p指向a0,则p=p+1之后,p指向a (3)如果p=a等效于p=&a|0; 则p=a+4等效于p=&a4}; p a01 p p+1 a 等效 +1 (P+1) a[2] (P+2) p+2 p+2 a[3] (P+3) al *(p+4)B
13 说明 ➢ (1) p=a; 这里数组名作为数组的起始地址,即a[0]的地址。 因此 p=a 等效于 p=&a[0]; ➢ (2) p=p+1; 如p指向a[0], 则p=p+1之后,p指向a[1] ➢ (3) 如果p=a 等效于 p=&a[0]; 则 p=a+4 等效于 p=&a[4]; a[0] a[1] a[2] a[3] a[4] *p *(p+1) *(p+2) *(p+3) *(p+4) p p+1 p+2 p p+1 p+2 等效
做下面的实验 ∥指针4.c #include <stdio.h> /预编译命令 void maino ∥主函数 函数体开始 inta|5={1,3,5,7,9}; ∥定义数组,赋初值 int"p; ∥定义指针变量 int i=0: ∥定义整型变量,赋初值 for(p=a;p<a+5;p=p+1)/赋值给指针变量,让p指向数组 循环体开始 printi("a|%d]=%dmn"i,p);∥输出a数组元素的值 i=i+1 让i加1 循环体结束 函数体结束
14 // 指针4.c #include <stdio.h> //预编译命令 void main() //主函数 { //函数体开始 int a[5]={1,3,5,7,9}; //定义数组,赋初值 int *p; //定义指针变量 int i=0; //定义整型变量,赋初值 for(p=a;p<a+5;p=p+1) //赋值给指针变量,让p指向a数组 { //循环体开始 printf("a[%d]=%d\n",i,*p); //输出a数组元素的值 i=i+1; //让i加1 } //循环体结束 } //函数体结束 做下面的实验
数组名是一个常量指针,指向该数组的首地址,例 ∥指针5.c #include <stdio.h> void maino char"p ∥定义指向字符类型的指针变量p static char s=“ abcdefgh”;∥定义字符数组,并赋值 p-S, ∥数组名是一个常量指针 ∥它指向该数组首地址 while(p!=“10) ∥当p所指向的数组元素不为”0时 p=p+1; ∥让指针加1 printf(字串长度为%dm”,ps);输出字串长
15 // 指针5.c #include <stdio.h> void main() { char *p; // 定义指向字符类型的指针变量p static char s[] = “abcdefgh”; // 定义字符数组,并赋值 p=s; // 数组名是一个常量指针, // 它指向该数组首地址 while (*p != ‘\0’) // 当p所指向的数组元素不为’\0’时 { p=p+1; // 让指针加1 } printf(“字串长度为%d\n”,p-s);// 输出字串长 } 数组名是一个常量指针,指向该数组的首地址,例