1. 首页 > 科技

C语言结构体为何无法赋值?(C语言中结构体中的数组,不能直接赋值吗)

C语言结构体为何无法赋值?(C语言中结构体中的数组,不能直接赋值吗)

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

t2.mark=t1.mark;//mark为结构体中的数组,不能直接赋值??

是的,数组名是个静态地址值,不能被修改,如果想把数据存储到其中,可以用memcpy()函数进行内存拷贝,或采用循环进行赋值

#include <string.h>

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

C语言 结构体的赋值

这叫结构体变量声明与初始化。

按规定,花括号内的 初始化 数值,必须为常量。

struct student a[3]={zhangsan,{。。。。}; //错在初始化用了 非常量

你的结构数组a[3] 里用了变量 zhangsan, 语法上是错的。

你可以改成:

struct student a[3]={ {0}, {1002, 后面照抄。。。。。};

其中 {0} 是给数组元素 a[0] 初始化,充0 占位。

声明完毕,语句部分 另加一句赋值语句: a[0]=zhangsan; 就把zhangsan的数据传给a数组的 元素 a[0] 了。

C++ 类中结构体成员无法赋值

这本身就是语法问题,C++11中支持对类成员直接用= 初始化

你如果要对test.num初始化 就应该写在struct a的构造函数中,而不是这样的写法

c语言 数据结构 赋值问题

你是传值,不是传址。如下修改,能正确得到理想结果:

#include<stdio.h>

#include<stdlib.h>

//void initstack(struct snode*);

struct snode

{

int data[10];

int top;

};

main()

{

void initstack(struct snode*);

struct snode L;

initstack(&L);

printf("%d\n",L.top);

getchar();

}

void initstack(struct snode *L)

{

L->top=1;

}

运行结果:1