取消引用指標
int a = 1;
int *a_pointer = &a;
要取消引用 a_pointer
並更改 a 的值,我們使用以下操作
*a_pointer = 2;
這可以使用以下列印語句進行驗證。
printf("%d\n", a); /* Prints 2 */
printf("%d\n", *a_pointer); /* Also prints 2 */
但是,人們會錯誤地取消引用 NULL
或其他無效指標。這個
int *p1, *p2;
p1 = (int *) 0xbad;
p2 = NULL;
*p1 = 42;
*p2 = *p1 + 1;
通常是未定義的行為 。p1
可能無法解除引用,因為它指向的地址 0xbad
可能不是有效地址。誰知道那裡有什麼?它可能是作業系統記憶體或其他程式的記憶體。使用這種程式碼的唯一時間是嵌入式開發,它將特定資訊儲存在硬編碼地址中。p2
不能被解除引用,因為它是 NULL
,這是無效的。