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