这是我在采访中要求的代码片段,请解释一下&的用途。
#include<stdio.h>
int main()
{
char *str="INCLUDEHELP";
printf("%s",*&*str);
}
最佳答案
&*
是一个空操作。 &*str
(或类似 &*&*&*&*&*&*&*&*&*str
或任意数量的 &*
) 等同于 str
。参见 C11 note102 .我们可以省略它。
char *str="INCLUDEHELP";
printf("%s", *str);
此带有 %s
的代码无效。 %s
需要零终止的 char
数组。 *str
是一个 char
,其值为 'I'
,一个字符。类 linux 系统上的程序很可能会收到段错误信号,因为 'I'
将是零终止字符数组的无效地址。
如果是:
char *str="INCLUDEHELP";
printf("%c", *str);
或:
#include<stdio.h>
int main()
{
char *str="INCLUDEHELP";
printf("%c",*&*str);
}
,然后程序会在它的 stdout
上打印一个字符 I
。
关于c - printf ("%s",*&*str) 的输出是什么? str 中的哪里是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520951/