字符指针与字符数组的问题
运行环境:winxp vc6
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct person
{
char name[15];
int age;
};
int main()
{
struct person psz1[3]={"zs",24}; /* 两种定义 */
struct person psz2[]={{"zs",24},{"lisi",25},{"ww",26}};
psz1[1].name="lisi"; /* 此处出错 */
psz1[1].age=25;
for(int i=0;i<3;i++)
{
printf("%s\n",psz1[i].name);
printf("%s\n",psz2[i].name);
}
getch();
return 0;
}
编译不通过:C:\Program Files\Microsoft Visual Studio\MyProjects\test\source.cpp(16) : error C2440: '=' : cannot convert from 'char [5]' to 'char [15]'
There is no context in which this conversion is possible
然后我把结构体中的char name[15]改成char *name,就通过了,??
[解决办法]
数组跟指针是有区别的
psz1[1].name="lisi"; 这里相当于把"lisi"的地址赋给数组name,而数组name首地址是不能被改变的,当然会出错了, 可以strcpy(psz1[1].name, "lisi");
指针就不一样了,指针是可以直接赋值的
[解决办法]