【发布时间】:2019-12-27 17:40:05
【问题描述】:
假设这段代码在 C 中:
int a = 5;
int *b = &a;
*b = 6;
请注意,必须使用 * 取消引用 b 才能重新分配值。
但是,char 指针(字符串)并非如此:
char *name = "test";
name = "test2";
name 不必取消引用。这是为什么呢?
【问题讨论】:
-
当你取消引用一个指针时,你引用了指针指向的对象。所以在上面的赋值中,你将 6 赋值给变量
a,而不是指针b。 -
因为
name的值不是char,而是char*。
标签: c pointers c-strings dereference string-literals