1. 指针和数组的格式
数组:char a[]="hello world";
指针:char *p=a;
2. 指针和数组的等价关系
a[i]等价于*(a+i)等价于p[i]等价于*(p+i);
3. 指针和数组的区别
a是常量 p是变量
因此a不能被赋值,p可以被赋值。
4. 列举指针和数组操作时的正确和错误示范
char *p="hello world";
char a[]="hello world";
char *str;
char s[32];
正确操作:
1. p++; p向后移动一个char;
2. *p++; p向后移动一个char,但取值为*p的值。
3. p="nice"; 改变p的指向,但不能改变a的内容。
4. *(a++); 相当于a[0]++;
5. *a='A'; 相当于把a[0]赋值为'A';
6. str++; 指针相后移动一个char
7. str=p; 指针变量相互赋值
错误操作:
1. (*p)++; 由于指针p指向的是常量区的字符串,常量区的内容不能被修改。
2. *p='A'; 同上;
3. a++; 由于a是数组名,为常量,所以不能执行++操作。
4. *a++; 同上;
5. a="nice"; 由于a为常量,所以不能被赋值。
6. *str='A'; str为野指针,不能对不确定的空间赋值。
7. b=a; b也是数组名,为常量,不能被赋值。