#include <stdio.h>
int main()
{
int a[5] = {1, 2, 3, 4, 5};
char b[] = "FishC";
int i;
int *p;
// 数组名是数组第一个元素的地址,也就是数组的首地址
p = a;
printf("p的地址为%p\n", p);
p = &a[0];
printf("p的地址为%p\n", p);
printf("===== 优雅的分割线 ======\n");
for(i=0; i<5; i++){
// 每个地址间隔为变量类型所占大小
printf("a[%d] = %d -> %p\n", i, a[i], &a[i]);
}
printf("===== 优雅的分割线 ======\n");
for(i=0; i<5; i++){
// 每个地址间隔为变量类型所占大小
printf("b[%d] = %c -> %p\n", i, b[i], &b[i]);
}
printf("===== 优雅的分割线 ======\n");
// p+1 不是简单的地址加1 而是指向数组元素的下一个元素
printf("*p = %d, *(p+1) = %d, *(p+2) = %d\n", *p, *(p+1), *(p+2));
return 0;
}
|