c - printf ("%s",*&*str) 的输出是什么? str 中的哪里是指针?

标签 c

这是我在采访中要求的代码片段,请解释一下&的用途。

#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/

相关文章:

c - rand() 函数行为

c - 什么时候使用枚举?

c - 程序在执行期间改变变量值

c - C中数组的MPI_Reduce

c++ - 从 Matlab 调用 Cpp 项目

c - 如何在c中定义常用函数

从 void** 转换为 int

c - 将数据从文件加载到结构中

c - 理解 C 中函数的 typedef

c++ - 等待另一个 child 的 child