【发布时间】:2019-11-12 17:53:21
【问题描述】:
此代码 ...
void main()
{
char str[5];
long int c=scanf("%s",str);
printf("\n%p %p %p %p", c, &str[0], &str[1], &str[4]);
}
...
给出了输出: ...
bhjun //thats the input
0x1 0x7ffe98cdf5a3 0x7ffe98cdf5a4 0x7ffe98cdf5a7
...
我可以理解字符串字符的内存地址之间的关系,但是 scanf() 返回的是哪个内存地址,为什么是十六进制的,为什么它返回字符串的内存地址,而它返回数字和字符常量的输入数?
【问题讨论】:
-
读取 printf() 和 "%p" 的格式说明;这解释了十六进制格式。另请阅读有关 scanf() 的结果值。然后请注意,将整数
c作为指针输出是没有意义的。最重要的是,尝试阅读一本也涵盖调试的 C 语言书籍。
标签: c scanf return-value