结构体中的数组不能直接赋值,把一个结构体数组赋值给另一个结构

http://www.itjxue.com  2023-01-20 00:59  来源:未知  点击次数: 

最近学的数据结构,发现用vc6写代码时出现不能对结构体中的字符数组直接赋值这个问题

字符数组在初始时是可以这样赋值的,但是定义后就不能这样赋值了,只能用函数赋值

函数

strcpy(len.s,"china");

这样就行了,不过要在前面加上头文件 #include string.h

C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗?

1.如果这个结构体没有指针成员的话,可以直接用“=”号赋值(目前主流的编译器都支持这样的赋值,如果是特别老旧的编译器可能不支持这样,那就要把每个成员分别赋值了 如果有指针成员,那么这个指针成员不能简单的赋值

C语言中结构体中的数组,不能直接赋值吗?

因为数组名就是数组第一个元素的指针常量,是一个常量左值。可以赋值的必须是非常量左值,常量左值和右值是不可以被赋值的。 以上是我个人的理解,有疑问继续追问。

结构体里定义了一个数组,那这个数组能不能直接给另一个数组赋值?

数组无法通过赋值运算符直接整体赋值

可通过循环逐个元素赋值,或直接使用库函数memcpy整体赋值

C语言中结构体中的数组,不能直接赋值吗

intmain(void){

structstudentsbao={};

printf("%d,%s\n",bao.id,bao.name);//输出是4224528,空(应该是null)

//structstudentsbao={3,"123"};可以。第一种赋值方法

//strcpy(bao.name,"bao");//可以,

//printf("%d,%s\n",bao.id,bao.name);

//bao.name="bao";错误“stray'\351'inprogram”其他是乱码,

//bao.name[0]='a';

//bao.name[0]='/0';

//printf("%d,%s\n",bao.id,bao.name);

/*这样可以,*/

//chararr[10]="baobao";

////bao.name=arr;//error"assignmenttoexpressionwitharraytype"

//scanf("%s",bao.name);//可以,

//printf("%d,%s\n",bao.id,bao.name);

//所以scanf那一类函数都可以。

//还有就是memcpy函数也是可以的

return0;

}

扩展资料

C语言结构体数组的直接赋值及数组的长度计算:

#includestdio.h

//自定义一个字符串的结构体,包含字符串和字符串长度两个变量

typedefstructStr{

charch[100];

intlength;//char数组(字符串)的长度

}myStr;

//刚开始声明变量时每个变量的字符串长度length都为0

//这里以长度为10的数组为例,数组长度是1000

//对第0个到第9个结构体数组的长度同时赋值为0

myStrmyStr1[10]={

[0...9]={

.length=0,

}

};

intmain(){

inti;

for(i=0;i10;i++){

printf("%d\n",myStr1[i].length);

}

return0;

}

(责任编辑:IT教学网)

更多

推荐XML/XSLT文章