今天做了一道编程题 很有意思 简单而容易犯错 :
#include<stdio.h>
int main()
{
char a[10] = "hello.c";
a[1] = '1';
printf("a = %s\n",a);
return 0;
}
#include<stdio.h>
int main()
{
char *p ="hello.c";
p[1] = '1';
printf("p = %s\n",p);
return 0;
}
上面的两个程序中 第一个程序能正常运行 而第二个却不能 char a[10] 相当于复制了一个字符串的空间 从而对复制后的 hello.c 字符串进行修改 原来的hello.c字符串并未改变 但是第二个程序中采用指针的方法去对 hello.c 字符串进行修改 但是原有字符串是不会被改变的 指针不想 char 有自己的空间 所以无法对原有的字符串进行操作 所以程序不能正常运行
其实还有很多很多c语言程序存在这样或大或小的陷阱 只要我们细心一点 就会发现问题 并努力去解决 所以学习的道路上 加油!