有人可以向我解释为什么这段代码会产生分段错误:
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 );
Run Code Online (Sandbox Code Playgroud)
当我尝试打印时,它也会出现相同的错误
*string2 or *string2[2] or &string2[2]
Run Code Online (Sandbox Code Playgroud)
我对此非常困惑,同样我在网站上看到的例子似乎是打印而不是这个.
cni*_*tar 10
前两个很好,但在最后一个你可能想要:
printf("string[2]= %c, string2 = %p\n", string[2], (void *)&string2 );
^ ^
Run Code Online (Sandbox Code Playgroud)
你得到一个分段错误,因为你正在试图printf
将一个小整数(string[2]
)解释为一个指针(这是%s
预期的).
归档时间: |
|
查看次数: |
1944 次 |
最近记录: |