指针的两大核心思想-访问与偏移
1.变量的访问有两种方式
a.变量名
b.地址
引入:
int a;
a=10;
printf("通过变量名 a=%d\n",a); //通过变量名访问
printf("通过地址 a=%d\n",*(&a)); //通过地址访问,感觉写法很突兀
因此引入指针概念,通过引入指针变量,存放a的地址
int *p;
p=&a;
printf("通过指针 a=%d",*p);
当然指针变量是分类型的,因此有必要去研究指针指针的偏移量与偏移后指向谁
2.指针的指向与偏移
通过循环变量当数组下标引用数组
int array[3]={1,2,3};
int *p1;
p1=array; //p1=&array[0]
int i;
for(i==0;i<3;i++)
{
printf("%d ",array[i]);
}
通过指针偏移访问数组
for(i=0;i<3;i++)
{
printf("%d ",*p1);
p1++;
}
for(i=0;i<3;i++)
{
printf("%d ",*(p1+i));
}
//同时可利用地址来做循环变量
for(p1=array;p1<array+3;p1++)
{
printf("%d ",*p1);
}
归纳总结
1.变量访问有两种方式 a.变量名 b.指针
2.指针
a.指向谁(类型) p=&a;
b.偏移后指向谁 p++
int *p p++偏移了四个字节
char *p p++偏移了一个字节