有人可以向我解释为什么此代码会出现段错误:
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/