C语言取消引用指针
示例
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,这是无效的。