c语言结构体初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言结构体初始化相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
main()

struct Mem
int Num;
char Sex[30];
int Age;
char Major[50];
;
struct Mem mem1,mem2;
struct Mem mem1=110192,"man",24,"机械制造及其自动化";
printf("%d,%s,%d,%s",mem1.Num,mem1.Sex[30],mem1.Age,mem1.Major[50]);


在c++6.0中总是提示error C2086: 'mem1' : redefinition,怎么整啊?

redefinition说明你重复定义了。
如果你要直接对其初始化,那么定义的同时就得为其初始化赋值。
不然定义好了该类型的变量后,用mem1.Num这样的类似表达式来为其赋值。
正确代码

#include<stdio.h>
struct Mem
int Num;
char Sex[30];
int Age;
char Major[50];
;
main()


struct Mem mem2;
struct Mem mem1=110192,"man",24,"机械制造及其自动化";
printf("%d,%s,%d,%s",mem1.Num,mem1.Sex,mem1.Age,mem1.Major);

//而且你mem1.Sex[30],mem1.Major[50]这两个是printf不了得哦!
参考技术A 你已经定义了一个mem1,下一句又定义了一个mem1,所以它会提示你多次定义了,应该把第二个struct Mem去掉吧 参考技术B 给你改了下
#include<stdio.h>
struct Mem

int Num;
char Sex[30];
int Age;
char Major[50];
;
main()


struct Mem mem1=110192,"man",24,"机械制造及其自动化";
struct Mem mem2 = mem1;
printf("%d,%s,%d,%s\n",mem1.Num,mem1.Sex,mem1.Age,mem1.Major);
参考技术C struct Mem mem1=110192,"man",24,"机械制造及其自动化";
变成 mem1=110192,"man",24,"机械制造及其自动化";
估计是vc6.0 把它当做c++来处理了
参考技术D 一眼就看出问题了。去掉倒数第三行 mem1 前面的struct Mem 就解决了

以上是关于c语言结构体初始化的主要内容,如果未能解决你的问题,请参考以下文章

c语言结构体初始化

C语言中结构体初始化的方法

关于C语言结构体构造函数初始化的问题?

c语言如何对结构体某一成员初始化

c语言结构体初始化

C语言结构体数组的初始化