#鹏哥C语言#P77
1.指针类型决定了指针在被解引用的时候访问几个字节,如果是int*的指针,解引用访问4个字节,如果是char*的指针,解引用访问1个字节
代码展示:
#include<stdio.h>
int main()
{
int a=0x11223344;
int* pa=&a;
char* pc=(char*)&a;
printf("pa=%p\n",pa);
printf("pa+1=%p\n",pa+1);
printf("pc=%p\n",pc);
printf("pc+1=%p\n",pc+1);
}
运行结果展示:
结论:指针的类型决定了指针进行加一减一操作的时候,跳过几个字节
2.通过指针访问数组
代码展示:
#include<stdio.h>
int main()
{
int arr[10]={0};
int* p=arr;
int sz=sizeof(arr)/sizeof(arr[0]);
int i=0;
for(i=0;i<sz;i++)
{
printf("%d ",*(p+i));
//此处*(p+i)=*(arr+i)=arr[i]
}
return 0;
}
运行结果展示:
3.证明:如果这个指针如果指向首元素的话,p+i和数组下标为i的元素是一模一样的
代码展示:
#include<stdio.h>
int main()
{
int arr[10]={0};
int* p=arr;
int sz=sizeof(arr)/sizeof(arr[0]);
int i=0;
for(i=0;i<sz;i++)
{
printf("%p--------%p\n",&arr[i],p+i);
}
return 0;
}
运行结果展示:
说明这个指针如果指向首元素的话,p+i和数组下标为i的元素是一模一样的