关于网友提出的“ “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:那意思是说一个中文字符需要四个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];当然会有问题.
学号用一个int型不就可以了吗