指针重温(一)
🔺定义 内存地址的变量。 int a = 3; int *pa; pa = &a; //&为取址运算符,表示取变量a的地址 printf("a = %d\n", a); printf("*pa = %d\n", *pa); printf("pa = %p\n", &a); printf("pa = %p\n", pa); 输出结果: 学习第一步:分清不同变量名最后输出的是什么内容,是地址还是常数。 总结: a是存放值的变量名,pa是指向变量a的指针变量名,也就是说pa里头存放的是a的地址,所以pa == &a。 *是间接运算符,也可叫做取值运算符,也可叫解引用运算符,所以*pa是取pa存放的地址里存放的值 就是3。 🔺声明指针 声明指针变量时必须指定指针所指向变量的类型。 声明时,*和指针之间的空格可有可无,通常,程序员在声明时使用空格,在解引用时省略空格。 ·编写程序时,可以认为变量有两个属性:名称和值(还有其他性质,例如类型,但是暂且不论)。 ·计算机编译和加载程序时,变量也有两个属性:地址和值。地址就是变量在计算机内部的名称。 🔺指针和数组 **指针和一维数组 一维数组名是数组首元素地址 int array[4] = {0, 1, 2, 3}; int *parray; int i; parray = array; for (i=0; i<4; i++) printf(