C语言中定义一个结构体如何在不同的.C文件中使用。

作者&投稿:屠肢 (若有异议请与网页底部的电邮联系)
C语言中关于结构体在不同.h文件中使用问题~

不是结构体本身的定义报错, 而是person变量被重定义了, 可以考虑
在头文件中不进行变量定义,而将变量开设移动到.c文件中

引用结构体有引用类型,和引用全局变量两种方式。
1、引用类型。
需要将结构体定义与头文件中(.h文件),然后在需要引用类型的源文件(.c)中,均引用该头文件,即可使用该类型。
2、引用全局变量。
要引用全局变量,需要先引用类型,之后在一个源文件中定义全局变量,在其它源文件中声明该全局变量,即可使用。
比如结构体为struct test, 定义全局变量为
struct test glabol_test;
在其它文件中,只需要
extern struct test globol_test;
即可在对应文件声明所在行之下进行调用。

比如三个.c文件一个.h文件

  1. c      2.c     3.c      4.h

    这三个头文件都引用4.h include<4.h>

    4.h中定义一个结构体类型struct test{};   

    1.c中定义一个该结构体类型的全局变量struct test mode;

    4.h中extern struct test mode;

    其他.c文件就可以直接使用这个结构体变量了,并且是共用的



struct
node{
int
a;
int
b;
}
这样就定义了一个结构体类型node,它有两个int类型的成员,分别是a和b,定义变量是用
struct
node
st_a;
这样的形式.(例如,上式就定义了一个名为st_a的结构体变量)

#include
然后就用啊

正式一点的,可以声明
extren struct XXX;
就可以了

注意头文件需要用#ifndef #define #endif
或者#pragama once,确保头文件只引入一次,以免引起重复定义的错误。

使用宏可以避免重复定义,参考:http://zhidao.baidu.com/link?url=4_Cvr9XaNHtemOQ2NjC8z1hV042CRRzigF5_HivUGK7vaMfPstv90a9A5R2asnPhQO6MTgxc-G6pzZdMvNi3Q_

包含这个.h头文件即可。


C语言问题,定义一个表示日期的结构体变量(包括年月日),写一个函数,返 ...
include <stdio.h> struct date \/\/定义结构体类型 { int y;int m;int d;};void main(){ date dt; \/\/定义结构体变量 int i,count, mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入日期(年 月 日):");scanf("%d",&dt.y);scanf("%d",&dt.m)...

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

C语言中结构的定义不带名称与带了名称有什么不同?
个人认为没什么多大的不同,我也关注中.希望有高手说一下.其实typedef是自定义类型,像第一个的typedef有点多余的意思,因为后面的都没有说出自己的自定义是什么类型,第二就是最常见的了,以后你写这个结构体的时候就可以用SC来代表struct C,而不用每一次用到这个结构体时都写成struct C \/*名*\/ 第三...

C语言头文件中定义结构体的问题
C语言程序设计中,为防止头文件在同一编译单元被重复引用,常引入#ifndef宏来进行保护,如:头文件my_head.h ifndef _MY_HEAD_H_ \/\/如果没有定义宏_MY_HEAD_H_#define _MY_HEAD_H_ \/\/则,定义该宏名\/\/以下是被保护的代码区\/\/进行相应的全局变量和结构体类型定义typedef struct stu { ...

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语言 建立一个结构体类型,包括了学生姓名和两门课的成绩,用这个类型定 ...
综合下面两个你再稍微改一下吧,现在没时间专门弄个完全扣题的了,见谅 include<stdio.h> include<string.h> include<stdlib.h> struct stu { int num;int wuli;int huaxue;int math;};FILE *fp;\/\/添加学生信息,可以排除与已存的冲突;void add(){ int a,b,c,d,n=0;struct stu student...

C\/C++语言中struct结构体定义中__packed的作用是什么?
但如果不用__packed的话,系统将以默认的方式对zhidao齐(假设是4字节),那么它占4 + 4 + 8 + 4 = 20;(不足4字节以4字节补齐)。各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的...

在数据结构中(C语言描述),这个是什么意思?求分析
这就是c语言定义的一个结构体,sqstack是结构体的名字,也就相当于一个int一样,可以在后面定义内容包含 SElemType *base;SElemType *top;int stacksize;的对象,例如SqStack a;a中就包含顶点指针 *top,底指针*base,和结构体长度 stacksize。栈就是一个空间,相当于又结构体累加起来的一个...

c语言中结构体struct中定义结构体后 成员表中的 name[10]是什么意思...
比如:struct STUDENTSRECORD { char name[10];int age,class;} mStudent[20];这个结构中name[10]表示此结构中包含一个字符型数组,名为name可以存放10个字符型数据,经常存放字符串字符串最长9个字符以字符'\\0'结尾。输入1号学生姓名:scanf("%s",mStudent[0].name);输出1号学生姓名:printf("...

C语言中,&结构体是什么操作呢
2. 结构体怎么用?2.1 定义结构体 语法 struct 结构体名{ 成员列表;};1 2 3 结构体里面的成员定义方式与变量相同,也就是在结构体里面定义了多个变量。例如,定义一个学生的结构体:struct Student { char name[32]; \/\/姓名 int age; \/\/年龄 float score; \/\/成绩 };1 2 3...

巴青县18559684960: C语言中定义一个结构体如何在不同的.C文件中使用. -
沙爸双环: 比如三个.c文件一个.h文件 1. c 2.c 3.c 4.h 这三个头文件都引用4.h include<4.h>4.h中定义一个结构体类型struct test{}; 1.c中定义一个该结构体类型的全局变量struct test mode;4.h中extern struct test mode;其他.c文件就可以直接使用这个结构体变量了,并且是共用的

巴青县18559684960: c语言中定义结构体有哪些方法? -
沙爸双环: 1.结构体类型数据的定义方法和引用方法 定义结构体:struct 结构体名 { 成员列表 }; 定义结构体类型的变量:有三种形式 ① 定义类型时定义变量:struct 结构体类型名 { 成员列表 }变量名列表; ② 直接定义结构类型变量:struct { 成员列表 }变量...

巴青县18559684960: c语言一个结构体如何在多个源文件里面调用? -
沙爸双环: foo.h文件里面写 #ifndef _FOO_H_ #define _FOO_H_ struct foo { int date; }; #endif 然后每一个需要这个结构体的文件都加头文件 foo.h

巴青县18559684960: c语言怎么在同一个c文件中使结构体中的变量定义不同.详细如下 -
沙爸双环: 用枚举型 enum 里面2个变量 char * stack; int * stack;

巴青县18559684960: c语言中,想用到另一个.c文件中定义的结构体,如何操作 -
沙爸双环: 类型定义要放在头文件中,然后在需要用这个类型的文件中包含对应的头文件.

巴青县18559684960: C语言结构体中struct和typedef struct有什么区别? -
沙爸双环: C语言结构体中struct和typedef struct区别为:声明不同、访问不同、重新定义不同. 一、声明不同 1、struct:struct可以直接使用结构体名字声明结构体. 2、typedef struct:typedef struct的为.修饰结构体,结构体有了别名,通过结构体别名声明...

巴青县18559684960: C语言中的结构体类型是什么? -
沙爸双环: 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成...

巴青县18559684960: C语言中结构体类型名与变量名区别? -
沙爸双环: 结构体名字是类型名,变量名是实体名,一个类型可以有许多实体. 具体操作,举例讲解如下: 1.结构体类型定义 定义方式1: Typedef struct LNode {int data; // 数据域struct LNode *next; // 指针域 } *LinkList;定义方式2: struct LNode {int ...

巴青县18559684960: c语言程序中的结构体与共用体具体是真么一回事?如何定义与使用?有什么区别?求详解! -
沙爸双环: 下面是结构体,就是把变量集合在一起,包含多个变量,同时存在 struct point { int x;int y; }; 共用体是几种不同类型的变量存放到同一段内存单元中.使用覆盖技术,几个变量互相覆盖.这种几个不同的变量共同占用一段内存的结构.union data { int i; char ch; float f; }a,b,c; 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用.

巴青县18559684960: 简单的编程问题,c语言中,我定义了一个结构体数组,但结构体中的各个元素的类型是不同的,比如一个学生 -
沙爸双环: 1.输入完成后进行判断即可,如输入的学号是多少位如果不是12位则返回错误,然后再遍历学号(以字符进行输入)如果字符中不是数字返回错误等,或者以数字进行(格式控制)先判断输入函数返回是否正确2.你确定是结构体数组而不是链表...

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