struct porb{char *name; int count;}x[]={\"li ning\",19,\"lang ping\",21,\"zhu jian hua\",20};main(){int i;for(i=0;i<3;i++)printf(\"%s: %d\\n\",x[i].name,x[i].count);}为什么在结构体中要定义name为指针而不能直接写name,否则就出一串错误?

热心网友

所有的字符串常量都是字符指针(char*)类型,你要分清字符常量(如\\\'A\\\')和字符串常量(如\\\"ABC\\\"),数组x中各成员的字符串常量只能赋组字符指针。当然,虽然上面的程序没出编译错误,但其使用方法还是有问题的,应该将char *name改成char name[20],其中的20可以指定为最大的姓名长度。

热心网友

直接写name的话,你只能给name赋一个字符类型的值。而你的程序里面,name赋给name的是字符串,格式错误,所以报错。