定义成字符数组的时候,数组名就是指向数组的首地址的指针,数组在一串连续的地址中,当执行复制向后移动指针的时候会依次读取字符,没问题,但是如果是指针,它指向的是在静态区的一串字符串的首地址,你要把指针向后移动,他的下一个指针指向何处就是个问题了,也就是你访问了不属于你的内存地址,所以出错了!!!
char* a a不是只能指向一个字符型数据么,你赋值的是字符串啊
C里面好像只能先把字符串放在数组里面,然后用指针指向这个数组,就可以用指针操作字符串了
指针a和b都指向字符串常量的地址,常量在程序运行过程中是不能被修改的,所以报运行时错误
//可以这样
//定义字符串存储空间
char a[1024];
char b[1024];
//字符串赋值
strcpy(a,"I am a student");
strcpy(b,"I am a teacher");
strcpy(b,a);
干嘛弄那么复杂,直接用 strcpy 不就可以了,还自己写这种过程
char [] 和char *是不同的, 前者是一个字符数组, 是有实际空间的。
char *a="I am a student";这一句,是将这个"I am a student"常量的地址赋给a, 而常量是不能被更改的。 所以你对a进行写操作会出错。