用数组名(指针常量 引用数组元素 输入输出数组元素: mha0方法2:数组名十偏移量 6 600 a+1 a[1] maino 6003 a+2 [int a[10], i 6004 a[2] 6005 puts("please input %d score: ",10) 6006 a[3] for(i=0:i<10:i++) 6007 scanf( %d for〔i=0:i<10:i++) printf(" yd."(a+i): 16
16 用数组名(指针常量) 引用数组元素 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a a+1 a+2 main() {int a[10],i; puts(“please input %d score:”,N); for (i=0; i<10; i++) scanf("%d", &a[i]); for (i=0; i<10; i++) printf("%d ", a[i]); } 输入输出数组元素: 方法1:数组名+下标 main() {int a[10] ,i; puts(“please input %d score:”,10); for (i=0; i<10; i++) scanf(“%d”, ? ); for (i=0; i<10; i++) printf("%d ", ? ); } 输入输出数组元素: 方法2:数组名+偏移量 a+i *(a+i)
用指针变量引用数组元素 也可以用指针变量引 用一维数组元素 输入输出数组元素: int a[10],*p=ai 方法4:指针变量+偏移量 maino [int a[10], i: int p=a: a[0] puts (" please input %d score: " 10) 6001 p+1 for(i=0:i<10:i++) 6002 a[1] 6003 scanf( %d", p+I p+26004 a【2]lfor(i=0:i<10:;i++) 6005 6006 prnf("%d","(p+) a[3] 6007
17 用指针变量引用数组元素 main() {int a[10], i; int *p=a; puts(“please input %d score:”,10); for (i=0; i<10; i++) scanf("%d", &p[i] ); for (i=0; i<10; i++) printf("%d ", p[i] ); } 输入输出数组元素: 方法3:指针变量+下标 ▪ 也可以用指针变量引 用一维数组元素 ▪ int a[10],*p=a; 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a p p+1 p+2 main() {int a[10] ,i; int *p=a; puts(“please input %d score:”,10); for (i=0; i<10; i++) scanf(“%d”, ? ); for (i=0; i<10; i++) printf("%d ", ? ); } 输入输出数组元素: 方法4:指针变量+偏移量 p+i *(p+i)
用指针变量引用数 4通过数组名的 变化引用数组元 也可以用指针变量引 素行不行? 用一维数组元素 输入输出人 int a[10], *p=ai 方法5:指针变化 maino [int a[10],i ○ intp a[0] for[=a:D<(a+10):p++) 6001 数组元素的引用形式 ++ 6002 a[1] 6003 "a[i]或*(a+i) p++6004 a[2] 6005 p[i]或*(P+i) 6006 a[3] 6007 *(P++)
18 用指针变量引用数组元素 main() {int a[10] , i; int *p; for (p=a; p<(a+10); p++) scanf("%d", p); for (p=a; p<(a+10); p++) printf("%d ", *p); } 输入输出数组元素: 方法5:指针变化 ▪ 也可以用指针变量引 用一维数组元素 ▪ int a[10],*p=a; 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a p p++ p++ •通过数组名的 变化引用数组元 素行不行? ▪数组元素的引用形式 ▪a[i]或*(a+i) ▪p[i]或*(p+i) ▪*(p++)
区分几个表达式 ■|十 指向下一个地址单元 k的 n间接引用P指向的数据单元,然后,p指向 下一个地址单元 同上 (+p)‘先将指个地址单元,然后间按引用 Cp)++·P指向的数据+1 19
19 区分几个表达式 ▪ P++ ▪ *p++ ▪ *(p++) ▪ *(++p) ▪ (*p)++ ▪ 指向下一个地址单元 ▪ 间接引用p指向的数据单元,然后,p指向 下一个地址单元 ▪ 同上 ▪ 先将p指向下一个地址单元,然后间接引用 p指向的数据单元 ▪ P指向的数据+1
两个重要内容: °指针指向了哪个数组元素? # include <stdi是指针运算还是数组元素运算 maIn 0 ina=1,2,3,4,J int *p= NULL p=a printf printf("%d."*(+p)冫 printf %d, *++p) printf( yod, "(p-D) printf %d, *p++) 1,2,3,3,23,4,4 printf %d, "p) printf %d, ,++(P)) printf %d, " ' p) 20
20 读程序-2 #include <stdio.h> main() { int a[] = {1,2,3,4,5}; int *p = NULL; p = a; printf("%d, ",*p); printf("%d, ",*(++p)); printf("%d, ",*++p); printf("%d, ",*(p--)); printf("%d, ",*p++); printf("%d, ",*p); printf("%d, ",++(*p)); printf("%d, ",*p); } 1,2,3,3,2,3,4,4 •两个重要内容: •指针指向了哪个数组元素? •是指针运算还是数组元素运算