我已经写了两段代码,我打算输出相同的输出,但容易混淆,输出不同。修改和打印字符串不会导致预期的输出
代码的第一片:
#include<stdio.h>
int main(){
char a[]="abc";
char *p=&a;
char c=++(*p);
printf("%c,%s\n",c,p);
return 0;
}
此输出以下:
B,BBC
第二件的代码:
#include<stdio.h>
int main(){
char *p="abc";
char c=++(*p);
printf("%c,%s\n",c,p);
return 0;
}
,其输出:
一个,ABC
什么在第二代码段,其防止字符串的第一个字符从递增发生?
它可能发生在某些系统中,因为第二个代码的“abc”位于无法更改的内存区域中。在第一个应用程序中,字符串“abc”在堆栈中始终可以修改。 – rbelli 2012-04-02 16:08:34