指针1指针是存放内存地址的变量普通变量存数值指针变量存另一个变量的地址。符号变量名 取地址运算符访问里面的值。*指针名 解引用运算符访问这个地址里面的值。2基础写法#includestdio.h int main(){ int a10; int *p; pa; printf(%d,*p); *p20;//修改p指向a的值a变成2. printf(%d,a);//输出2 }3 定义的时候int *p使用的时候*paa的地址a盒子里的东西p保存盒子的编号*p盒子里面的东西4, 与scanf的关系int x; scanf(%d,x):用指针的等价写法int x: int*px; scanf(%d,p);5易错点p指针加一不是地址加一地址加4.指针加数组1数组名为arr代表数组首元素的地址也就是arr[0]int arr[5]{11,22,33,44,55}arr是第一个元素也就是11的地址但可以把这个地址给指针变量指针变量可以自增自减2下标写法和指针写法完全等价arr[i] *(arri) p[i] *(pi)arri从首地址向后跳i个int不是i个字节例int arr[5]{11,22,33,44,55}; int*parr; printf(%d,arr[2]);//3 printf(%d,*(arr2));//3 printf(%d,p[2]);//3 printf(%d,*(p2));//3注意p是指针指向类型大小加1例int :4char1double83用指针遍历数组两种写法#includestdio.h int main(){ int arr[5]{11,22,33,44,55}; int*p; for(parr;parr5;p){ printf(%d,*p); } }int*parr; for(int i0;i5;i){ printf(%d,*(pi)); }4用sizeof得到的是8字节