int c = 1, d = 2;
int *p;
p = &c; // int 型指针 p 指向 c
d = *p; // 指针 p 所指向的值赋值给变量 d
把变量 c 的地址赋值给变量 p,我们称 p 为指向 c 的指针。
地址运算符 & 只能应用于内存中的对象,即变量和数组数组元素,它不能作用于表达式、常量还有 register 类型变量。
一元运算符 * 是间接寻址或者间接引用运算符,当它作用于指针式,将访问指针所指向的对象。
#include<stdio.h>
int main()
{
int i;
int x = 1, y = 2;
int z[10] = {10};
int *p;
for(i = 0;i < 10;i++)
{
printf("%d\n", z[i]);
}
p = &x; // p 指向 x
printf("x = %d, y = %d, *p = %d\n", x, y, *p);
y = *p; // 把 p 指向地址的值(x)赋给 y,故 1 = y = *p = x
*p = 0; // 把 p 指向地址的值改为 0,即 x = 0
p = &z[0];
printf("x = %d, y = %d, *p = %d\n", x, y, *p);
return 0;
}
运行结果如下: