1.下面代码有什么错误? void test() { char string[10]; char *str1="0123456789"; strcpy(string,str1); } 答:*str="0123456789"是在静态区取了十个字符,存放在string这个字符数组中。由于这个字符数组最多放十个字符,会导致strcpy函数无法添加'\0',在输出这个字符串时可能会导致越界访问。
2.请问以下代码有什么问题 int main() { char a; char *str=&a; strcpy(str,"hello") printf(str) return; } 答:1.char a;a只能存储单字符。若要实现字符串应写成:char a[10];并修改下一句为char *str=a;2.printf(str)和strcpy(str,"hello")后缺少;;3.对字符串输出错误。应写成:puts(str);或者printf("%s\n",str);。 3. char *s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错? 答:char *s="AAA"中的s存放的静态区的字符串常量"AAA"是只读的,无法改变;因此s[0]='B';错误;运行后会出现段错误。 4.下面是一段计算0~100累加和的代码。请指出这段代码中的错误。 int main() { int *MyData; int Count=100; int Sum,i; for(i=0;i Sum+=*MyData; MyData++; } return Sum; } 答:1.int *MyData;未对MyData这个指针进行初始化,是个野指针,使用野指针使会导致计算机混乱;2.for(i=0;i |