“const char”类型的值不能用于初始化“char”类型的实体,这句话不明白什么意思

来源:互联网  时间:2016/7/15 7:29:03

关于网友提出的“ “const char”类型的值不能用于初始化“char”类型的实体,这句话不明白什么意思”问题疑问,本网通过在网上对“ “const char”类型的值不能用于初始化“char”类型的实体,这句话不明白什么意思”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: “const char”类型的值不能用于初始化“char”类型的实体,这句话不明白什么意思
描述:

我写了一个顺序表的程序,结果有3个警告,都是标题那句话
这个程序包括两部分 SeqList.h 和 main.c ,SeqList.h 部分正确,就在 main.c 的 stu[3] 部分出了问题

#include 
#include 
typedef struct Student
{
char num[7];    //学号
char name[10];  //姓名
char sex[3];    //性别
short age;      //年龄
}Student;
typedef Student DataType;
#include "SeqList.h"
void main()
{
int i;
SeqList* myList = NULL;
//DataType* List = (DataType*)malloc(myList->maxSize * sizeof(DataType));
DataType stu[3] = {{2000001,"张 三","男",20},
{2000002,"李 四","男",21},
{2000003,"王 五","女",22}};
myList = Initiate(100);        //初始化一个顺序表
for(i = 0; i < 3; i++)              //插入数据
{
Insert(stu[i],i,myList);
}
for(i = 0; i < 3; i++)
{
DataType item;
item = GetData(i,myList);
printf(" %c   %c   %c   %d\n",item.num,item.name,item.sex,item.age);
}
printf("\n\n删除数据后:\n\n");
Delete(3,myList);
for(i = 0; i < 3; i++)
{
DataType item;
item = GetData(i,myList);
printf(" %c   %c   %c   %d\n",item.num,item.name,item.sex,item.age);
}
printf("\n");
}

这个程序如果把 main.c 中的 DataType 定义为 int 并插入整型数就不会有错了。
这个程序是由http://topic.csdn.net/u/20120420/23/d02fde6e-ffd1-468c-9f0a-62a0c6d8eb49.html这个程序改进的,SeqList.h 部分改对了。
解决方案1:

你把name定义成指针型的 “char name[10]”改为char *name就OK了

解决方案2:

引用 9 楼  的回复:
(我的编译器是 VS2010) 改了后成功了,但就是定义 sex[3] 时,DataType stu[3] 中的性别的一列下面会有波浪线提示:“const char[4]”类型的值不能用于初始化“char[3]”类型的实体。如果定义为 sex[4] 就不会出现那种情况
引用 8 楼  的回复:
你在输出的时候也不对
C/C++ code
printf(" %c   %c   %c  ……

那意思是说一个中文字符需要四个char空间来保存,三个不够。 解决方案3:

你在输出的时候也不对

printf(" %c   %c   %c   %d\n",item.num,item.name,item.sex,item.age);

改成
printf(" %s   %s   %s   %d\n",item.num,item.name,item.sex,item.age);

楼主要好好看看基本数据类型…… 解决方案4:

赋值有问题

DataType stu[3] = {{2000001,"张 三","男",20},
                {2000002,"李 四","男",21},
                {2000003,"王 五","女",22}};

改成
DataType stu[3] = {{"2000001","张 三","男",20},
                {"2000002","李 四","男",21},
                {"2000003","王 五","女",22}};

解决方案5:


DataType stu[3] = {{"2000001","张 三","男",20},
{"2000001","李 四","男",21},
{"2000003","王 五","女",22}};
你要初始化也应该这样:
解决方案6:

2000001是int型整数,被你用来初始化char num[7];当然会有问题.

引用 2 楼  的回复:
C/C++ code
DataType stu[3] = {{2000001,"张 三","男",20},
                {2000001,"李 四","男",21},
                {2000003,"王 五","女",22}};
就是那几个汉字(改成英文也是一样)部分提示:“const char*”类型的值不能用于初始化“char”类型的实体……
解决方案7:

学号用一个int型不就可以了吗

上一篇用bat批处理写一个打开关闭某个程序
下一篇关于表达式的计算问题
明星图片
相关文章
《 “const char”类型的值不能用于初始化“char”类型的实体,这句话不明白什么意思》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)