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;
}
運行結果如下: