有人可以向我解释为什么此代码会出现段错误:

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/

10-13 06:02