C语言中如何定义全局结构体变量

Python014

C语言中如何定义全局结构体变量,第1张

结构定义

用户定义自己所需要的结构型,可以采用下列定义语句:

struct 结构型名

{ 数据类型符1 成员名1;

  数据类型符2 成员名2;

  数据类型符3 成员名3;

  ...

  数据类型符n 成员名n;

}

定义结构型变量的方法有三种,在定义的同时,可以给变量的每个成员赋初值。

先定义结构型,后定义变量

例如:

struct student

{long number

 char name[10]

 char sex

 float score[3]

}

...

struct student x,y  /*定义student结构型的变量x和y*/

在定义结构型变量的同时,可以对结构型变量的所有成员赋初值。

例如:

struct student x={100001L,"zhao1",'f',{89,94,86}},

               y={100002L,"zhao2",'m',{78,86,92}}

2.定义结构型的同时定义变量

这种方法是将结构型的定义和变量定义同时进行。然后仍然可以使用这种结构型来定义其他的变量。

例如:

struct student

{long number

 char name[10]

 char sex

 float score[3]

 }x={1000001L,"zhao1",'f',{89,94,86}}  /*定义结构型同时定义变量并赋值*/

 ...

 struct student y={100002L,"zhao2",'m',{78,86,92}} 

 /*这个语句是正确的是因为前面定义了数据类型符struct student*/

3.定义无名称的结构型的同时定义变量

这种方法是将结构型定义和变量的定义同时进行,但省略了结构型的名称,以后将无法使用这种结构型来定义其他变量。例子与2的例子差不多,只是因为没有定义结构型的名称,所以后面对y的赋值就不可用。

从变量的生存期来分,我们把生存期覆盖了定义点到整个程序结束的变量成为具有全局寿命的变量,简称“全局变量”。

习惯上结构定义都是在main函数之前的,从这一点上看,结构都是全局变量,不知道这样回答是不是让你满意。

首先要在a.h的最前面和最后面添加下面几个语句,防止全局变量在多个文件中被使用,a.h多次被包含会报重定义的错!

#ifndef _A_H_

#define _A_H_

......

所有include、宏定义啊、函数定义声明神马的

......

#endif

然后,定义结构体后,在a.h中继续声明结构体全局变量

extern struct people people_1

在你要使用上述全局变量的.c 或 .cpp文件中包含a.h 头文件,再 定义该全局变量

struct people people_1

这样应该就可以使用了,你试试吧~~~【上周刚刚这样用过

没问题,全局结构体数据和全局int类型数组一样的使用方法。示例代码如下。

输入1 2 3 4 5

输出1 2 3 4 5

#include <stdio.h>

struct test

{

    int a

}

struct test test_a[5]

void intput()

{

    int i

    for(i=0i<5i++)

    {

        scanf("%d",&(test_a[i].a))

    }

}

void output()

{

    int i

    for(i=0i<5i++)

    {

        printf("%d ",test_a[i].a)

    }

}

int main(){

    intput()

    output()

    return 0

}