直接进行代码演示
#include<stdio.h>
int main()
{
int arr[3]={1,2,3};
int *p=arr;//p是一个指针变量,保存地址的变量;arr是常量数组
printf ("sizeof arr is %d\n",sizeof(arr));//结果位12,3*4=12
printf ("sizeof arr is %d\n",sizeof(p));//结果为8,OS用8个字节表示一个地址
printf ("sizeof int is %d\n",sizeof(int));//结果为4,1个数字4个字节与sizeof(arr[0])作用相同
printf ("sizeof pointer is %d\n",sizeof(int *));//结果为8,只要是个指针就为8字节
printf ("sizeof pointer is %d\n",sizeof(char *));//结果为8,同上
printf ("%d ",*p);//*p取内容
putchar('\n');
printf ("%d ",*arr);//取首地址内容
putchar('\n');
for(int i=0;i<3;i++){
printf ("%d ",p[i]);//指针变量下标法
}
putchar('\n');
for(int i=0;i<3;i++){
printf ("%d ",*(p+i));//指针地址偏移i位
}
putchar('\n');
for(int i=0;i<3;i++){
printf ("%d ",*(arr+i));//数组名为首地址偏移i位
}
putchar('\n');
for(int i=0;i<3;i++){
printf ("%d ",*p++);//指针地址每次偏移1位
}
putchar('\n');
/*
for(int i=0;i<3;i++){
printf ("%d ",*arr++);//arr是指针常量,不允许自加,否则报错
}
*/
return 0;
}