- 初步了解——指针与取地址
#include<stdio.h>
int main(void)
{
int num = 7;
int *p = #//初始化指针,也可以写作int* p = #
printf("%d 的地址是 %p\n", num, p);
return 0;
}
上面int *p定义了一个指向int类型指针p(我们使用 " * " 符号把p声明为指针),并初始化p使其指向int类型的变量num,这里&num中的&是取地址操作符,当&作用于一个对象上时,它返回了该对象的地址。所以这里指针p指向了num所对应的地址。(我测试时输出了0028FF1C).
- 如何使用指针?——解引用与指针赋值
#include<stdio.h>
int main(void)
{
int num = 7;
int *p = #
printf("%d所在的地址是 %p\n", num, p);
printf("p所指向的地址为%p,该地址上所保存的值为%d\n", p, *p);
*p = 100;
printf("p所指向的地址为%p,该地址上所保存的值为%d\n", p, num);
return 0;
}
注意这里操作符为解引用操作符,它返回指针p所指的对象(左值).
我们可以对p赋值(对左值赋值),从而改变p所指的地址上所保存的值,从而改变此地址所存储的变量num的值。(上面num的值变为100).
当然,我们也可以给指针p赋值,使其指向另外一个地址(这样就改变了在解引用时获取的左值):
#include<stdio.h>
int main(void)
{
int num = 7, another = -5;
int *p = #
p = &another;
printf("%d\n", *p);
//此时p指向了another,所以输出了another的值,即-5
return 0;
}