有人可以向我解释为什么这段代码会出现段错误吗:
char string[] = "this is a string";
char * string2 = "this is another string";
printf("%s\n",string );
printf("%s\n", string2);
printf("string[2]= %s, string2 = %s\n", string[2], &string2 );
当我尝试打印时它也给出同样的错误
*string2 or *string2[2] or &string2[2]
我真的很困惑,同样我在网站上看到的例子似乎打印出来了,但不是这个。
最佳答案
前两个很好,但您可能需要最后一个:
printf("string[2]= %c, string2 = %p\n", string[2], (void *)&string2 );
^ ^
您遇到段错误是因为您欺骗 printf
将小整数 (string[2]
) 解释为指针(这就是 %s
预计)。
关于c - 如何在c中打印指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188028/