§回顾 ◆数组名代表什么? inta[5l;/a代表这组数的首地址 ◆如何访向数组元素及地址? a2]代表第3个元素,&a[2]代表第3个元素地址 ◆指针变量里存放的是什么? int*p;//p里存放的是内存单元地址 Advanced Programming
Advanced Programming § 回顾 ◆数组名代表什么? ◆如何访向数组元素及地址? ◆指针变量里存放的是什么? int a[5]; // a代表这组数的首地址 a[2]代表第3个元素,&a[2]代表第3个元素地址 int *p; // p里存放的是内存单元地址
§Q1:如何用指针指向数组? inta[5]={1,2345},p; p p=&a2 Advanced programming
Advanced Programming § Q1:如何用指针指向数组? int a[5]={1,2,3,4,5}, *p; p= ; p= ; a &a[2]
Q2:如何用指针访向数组元素? inta[5]={1,23,45},p=a; P++;//指针移动 兴P三5:给p所指向的数据元素赋值 Advanced programming
Advanced Programming Q2:如何用指针访向数组元素? int a[5]={1,2,3,4,5}, *p=a; P++;//指针移动 P--; *P=5; //给p所指向的数据元素赋值
]变址运算符 表示数组元素的两种方法:a白气 地址 元素 地址 元素 a[0 a a al p 0 a+1 al *(a+1)p +1 al p+1)p[ a+2a2a2]*(a+2)p+2a21*(p+2)p2] a 31 a+9[a9al9]*a+9) al (p+9)p[9 下标法 指针法 ap分*(P+1)<冷*(a+i) Advanced programming
Advanced Programming 表示数组元素的两种方法: a[0] a[1] a[2] a[3] a[9] ... a a+9 a+1 a+2 地址 元素 下标法 a[0] a[1] a[2] a[9] a[0] a[1] a[2] a[3] a[9] ... p p+9 p+1 p+2 地址 元素 指针法 *p *(p+1) *(p+2) *(p+9) [] 变址运算符 a[i] *(a+i) a[i] p[i] *(p+i) *(a+i) *a *(a+1) *(a+2) *(a+9) p[0] p[1] p[2] p[9]
例86用三种方法输出数组中全部元素的值 (1)下标法 (4)指针法和指针下标:(3)指针法 #include <stdio. h> #include <stdio. h> #include<stdio. h> void main (0 void maino void maino fint a[10; Rint a 10 Rint a 101; int i: int*p, i int*p, i; for(i=0;i<10;i++) for(i=0;i<10;i++) for(i=0;i<10;i++) scanf("%d",&ali]); scanf("%d", &a(i); scanf("%d", &a(il) printf(\n"); printf("\n; printf(\n"); for(i=0;i<10;i++) for(p=a, i=0; i<10; i++) for(p=a; p<(a+10): p++) printf("%od,ai:3 printf(""%d", "(p+i)); 3 printf("%d",*p);3 运行情况: 234567890 123.4.5.6-7890 Advanced programming
Advanced Programming ⑴ 下标法: #include <stdio.h> void main() {int a[10]; int i; for(i=0; i<10; i++) scanf("%d",&a[i]); printf("\n"); for(i=0; i<10; i++) printf("%d",a[i] );} 运行情况: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 例8.6 用三种方法输出数组中全部元素的值 ⑵ 用数组名: #include <stdio.h> void main() {int a[10]; int i; for(i=0; i<10; i++) scanf("%d",&a[i]); printf("\n"); for(i=0; i<10; i++) printf("%d",*(a+i));} ⑶ 指针法: #include <stdio.h> void main() {int a[10]; int *p,i; for(i=0; i<10; i++) scanf("%d",&a[i]); printf("\n"); for(p=a; p<(a+10); p++) printf("%d",*p );} ⑷ 指针法和指针下标: #include <stdio.h> void main() {int a[10]; int *p,i; for(i=0; i<10; i++) scanf("%d",&a[i]); printf("\n"); for(p=a,i=0; i<10; i++) printf("%d",*(p+i));}