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

作者&投稿:云功 (若有异议请与网页底部的电邮联系)
C语言中结构体中的数组,不能直接赋值吗~

数组不能整体赋值,需要逐个元素赋值,但是如果这个数组是一个结构体的成员,可以通过结构体之间的直接赋值间接达到数组整体赋值的效果,即:

t1.mark=t2.mark;//非法,数组不能直接整体赋值。
t1=t2;//合法,在此之后,t2.mark数组将被整体复制到t1.mark数组。

在c语言的语法中,这样不行
如果你需要初始化
可以这样写
struct stu{ int a; int b; int c;} student = {1,2,3};

intmain(void){

structstudentsbao={};

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

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

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

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

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

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

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

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

/*这样可以,*/

//chararr[10]="baobao";

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

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

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

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

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

return0;

}

扩展资料

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

#include<stdio.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;i<10;i++){

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

}

return0;

}



对于已经定义好了的数组,肯定不能用这样赋值啦,给结构体赋值其实就跟其他的变量赋值一样,难道你可以
int
a[3];
a={0,1,2};
这个给一个int数组赋值吗,不行啊。
正确的做法就是像其他变量一样一个一个赋值,当然也可在结构体初始化时赋值

t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值??
是的,数组名是个静态地址值,不能被修改,如果想把数据存储到其中,可以用memcpy()函数进行内存拷贝,或采用循环进行赋值
#include

memcpy(
t2.mark,
t1.mark,
sizeof(t2.mark)
);


C语言结构体中的 . 和 -> 是什么意思
.是普通的结构体类型的变量取用结构体里的元素,->是定义了一个该结构体类型的指针变量取用结构体的元素。

C语言中怎么给一个结构体用scanf进行赋值?
结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存。举例:编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数组(每组三个成绩)(int[3]),依次调用函数 include <stdio.h> include <stdlib.h> struct student ...

-> 在c语言中是什么意思?
“->”是一个整体,它是用于指向结构体子数据的指针,用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。问题中的p=p->next,意思是将p指向的一个结构体实例中的自数据next赋值给p。

C语言 结构体数组 计算个数
include <stdio.h> include <stdlib.h> include <conio.h> typedef struct student { int num;char name[20];char sex[3];struct student *next;}LIST;LIST *CreateList(){ int i,n;LIST *head=NULL,*pre,*cur;printf("请输入学生的总个数:");scanf("%d",&n);for(i=1;i<=n;i+...

c语言中c(5,2)代表什么意思?
C(5,2)表示从5个里面取2个的分组数,即组合数,其计算方法是5×4÷(2×1)=10;“c上面2下面5(0。4)(0。6)的三次方”的含义是“在5次独立重复试验中,恰好发生2次的概率”。在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到...

C语言中的 :1; 是什么意思?
->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.举个例子:struct Data { int a,b,c;}; \/*定义结构体*\/ struct Data...

C语言文件读写结构体里面的数据怎样存到磁盘文件上
1、首先打开VC++6.0。2、选择文件,新建。3、选择C++ source file 新建一个空白文档。4、首先声明头文件,#include<stdio.h>。5、主函数,定义变量main( ){ FILE *fp; int i; 需要一个结构体,struct rec{ \/*定义结构体类型*\/ char id[10];。6、主要代码if( (fp=fopen("d:\\\\in...

c语言结构体中的一个char数组怎么赋值?
把8个字符依次分别赋给c[0]~c[7]这8个元素。如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\\0')...

c语言中结构体后面的[数字]是什么意思
语法有问题吧?好像不能通过编译。struct student { int t;} a[1000];这样语法是没问题的。结构体数组。

C语言中struct结构体含有很多类型数据时如何一个scanf输入所有类型的...
for (i=0;i<10;i++)scanf("%d %c %f",&sch[i].num,&sch[i].name,&sch[i].score ); 就可以了。float score,float 型输入格式 是 %f 不是 %lf。&sch[1].name 里的 1 改用 i.注意,你的 name 只允许 1个字符。若多个字符 就会出错。如果 改为:struct student { int ...

武城县13853018445: C语言中结构体中的数组,不能直接赋值吗 -
直顷天麻: 数组不能整体赋值,需要逐个元素赋值,但是如果这个数组是一个结构体的成员,可以通过结构体之间的直接赋值间接达到数组整体赋值的效果,即:t1.mark=t2.mark;//非法,数组不能直接整体赋值. t1=t2;//合法,在此之后,t2.mark数组将被整体复制到t1.mark数组.

武城县13853018445: 如何给结构体里的数组字符串赋值? -
直顷天麻: C语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件中的strcpy函数来完成. 例如: char a[10] = "123"; /*正确,在定义的时候初始化*/ ...

武城县13853018445: c语言中数组不是不能被直接赋值吗?为什么这个结构体可以?而且怎么输出第二个同学的名字呢? -
直顷天麻: 数组是不能被直接赋值,但是数组可以在声明的同时进行初始化. 可以用puts(stu[1].name);进行输出.

武城县13853018445: C语言能直接用一个数组名对数组进行赋值吗 -
直顷天麻: 不可以,在int a[];时已经为数组在内存中开辟了空间,就是数组a和b的地址已经定下了,在C中,数组一旦在内存中被创建是是固定不变的,直到被取消,a=b,把b的地址给a是不行的.

武城县13853018445: 数组元素赋值:数组元素为结构体,能否直接用“=”从B数组的某个元素赋值到A数组的某个元素 -
直顷天麻: 可以 结构体跟 int型 double型 基本类型差不多,是可以用=赋值的 ,

武城县13853018445: c语言中字符数组能否直接赋值 -
直顷天麻: 首先是个二维数组定义数据类型是必须的,所以char得加上数组中都是可以直接赋值的,关键注意下赋值时的格式别搞错了

武城县13853018445: c语言结构体中的一个char数组怎么赋值? -
直顷天麻: (1)用字符常量逐个初始化数组.例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给c[0]~c[7]这8个元素.如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的.如果花括号中提供的初值个数(即字符个数)大于数...

武城县13853018445: 如何给结构体数组中的数组赋值?C语言的 -
直顷天麻: #include <stdio.h>struct node {int b[8]; }a[10];int main(void) {int i, j; for(i = 0; i < 10; i++){for(j = 0; j< 8; j++){a[i].b[j] = i + j + 1;}} for(i = 0; i < 10; i++){for(j = 0; j< 8; j++){printf("a[%d].[%d] = %d\n", i, j, a[i].b[j]);}}return 0; }别忘记加分啊

武城县13853018445: C语言为什么直接给二维数组中的某个元素赋值不行,比如A[0][0]=1,A是整型数组 -
直顷天麻: C语言规定,普通数组没有赋初值,默认的数组元素值是随机数,不是0.如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网