#include <stdio.h>
const int N=3;
int main() {
int a[N] = {1, 2, 3};
int i;
printf("通过数组名和下标直接访问数组元素:\n");
for(i=0; i<N; i++)
printf("%d: %d\n", &a[i], a[i]);
printf("通过地址间接访问数组元素:\n");
for(i=0; i<N; i++)
printf("%d: %d\n", a+i, *(a+i));
return 0;
}
![]()
#include <stdio.h>
const int LINE = 2;
const int COL = 3;
int main() {
int a[LINE][COL] = {1,2,3,4,5,6};
int i,j;
printf("通过数组名和下标直接访问数组元素:\n");
for(i=0; i<LINE; i++)
for(j=0; j<COL; j++)
printf("%d: %d\n", &a[i][j], a[i][j]);
printf("通过地址间接访问数组元素:\n");
for(i=0; i<LINE; i++)
for(j=0; j<COL; j++)
printf("%d: %d\n", a[i]+j, *(a[i]+j));
printf("二维地址中a+i表示的地址:\n");
for(i=0; i<LINE; i++)
printf("a + %d: %d\n", i, a+i);
return 0;
}
![]()
#include <stdio.h>
#include <stdlib.h>
const int N=3;
int main() {
int a[N];
int *p,i;
// 通过指针变量p,完成数组元素输入
for(p=a; p<a+N; p++)
scanf("%d", p);
// 通过指针变量p,完成数组元素输出
for(p=a; p<a+N; p++)
printf("%d ", *p);
printf("\n");
p = a;
//通过指针变量p,完成数组元素输入
for(i=0; i<N; i++)
scanf("%d", p+i);
// 通过指针变量p,完成数组元素输出
for(i=0; i<N; i++)
printf("%d ", *(p+i));
printf("\n");
return 0;
}
![]()
// 使用指针变量间接访问二维数组
#include <stdio.h>
int main() {
int a[2][3] = {1,2,3,4,5,6};
int i,j;
int *p; // p是指针变量,存放int型数据的地址
int (*q)[3]; // q是指针变量,存放包含有3个元素的一维数组的地址
// 通过指针变量p间接访问,输出二维数组a的元素值
for(p=a[0]; p<a[0]+6; p++)
//line11也可为 for(p=&a[0][0]; p<&a[0][0] + 6; p++)
printf("%d ", *p);
printf("\n");
// 通过行指针变量q间接访问,输出二维数组a的元素值
for(q=a; q<a+2; q++)
for(j=0; j<3; j++)
printf("%d ", *(*q+j));
printf("\n");
return 0;
}
![]()