52、指针

#include<stdio.h>

void f1(int b){
b=10;
}
void f2(int *c){
*c=10;
}
int main(){
int *p;//p是int *类型的,用来存放int类型变量的地址
int a=2;
p=&a;//p指向a
*p=3;//*p等价于a
f1(a);
f2(&a);//通过函数改变main函数当中的某一个变量,就需要对这个变量取地址
printf("%d\n",a);

int d[3]; //数组名d是一个int*类型的常量,其值为d[0]的地址
p=d;
p[0]=1;
p[1]=2;
p[2]=3;
printf("%d,%d,%d\n",d[-1]=1,d[3]=1,d[4]=1);//超出数组范围容易造成内存崩溃
*p=10;
*(p+1)=20; //*(d+1)=20
*(p+2)=30; //*(p+2)->p[2] *(p+2) 和*(2+p)等价 2[p]
0[p]=100;
1[p]=200;
2[p] =300;
//d=&a; error 因为d是一个常量
printf("%p %p %p\n",p,p+1,p+2);//p+n 实际上是p+sizeof(*p)*n
for(int i=0;i<3;++i){
printf("%d,",p[i]);

}

}

posted @ 2022-01-24 15:47  城北徐公135  阅读(35)  评论(0)    收藏  举报