【发布时间】:2020-07-18 08:30:02
【问题描述】:
他们说字符串自然是一个字符数组,表示其第一个字符的内存位置:string == &string[0]。这就是为什么当用户希望程序将数据读入该变量时,不必在字符串变量之前指定 & 符号:
scanf("%s", string);
但是有一个合理的问题:为什么我们在打印 string 时看不到字符串的内存位置?
printf("%s", string);
【问题讨论】:
-
如果它在一个实例中衰减到一个指针,为什么你会期望它在两个实例中都不会呢?
-
您能否更准确地了解您希望它打印的内容?创建一个最小的 main 函数并显示输入、预期输出和实际输出。
-
@klutt 我希望 &string[0] 代表什么——字符串内存位置。由于 string == &string[0],我希望 string 给出与 &string[0] 相同的值,这就是问题所在。
-
如果
p是一个指针,那么表达式p和&p[0]是一样的。 -
@Kaiyaha 是的,但这在问题中并不清楚。如果您的意思是应该打印文字字符串 "&string[0]" 或 i t 的地址,这有点模棱两可。
标签: c scanf memory-address