读书人

字符指针与字符数组的有关问题

发布时间: 2012-08-30 09:55:54 作者: rapoo

字符指针与字符数组的问题
运行环境: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");
指针就不一样了,指针是可以直接赋值的
[解决办法]

探讨
char a[10];
a="123";
是错的


char *p;
p="123";
是对的


请问"123"返回的是字符串的首地址吗?

读书人网 >C语言

热点推荐