c语言全局结构体
A. c语言关于(全局)结构体和全局变量的疑问
结构体并不是变量, 它只是一个自定义的数据类型, 就像int char double
B. c语言结构体
C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
(2)c语言全局结构体扩展阅读
1、struct是声明结构体类型时必须使用的关键字,不能省略。“结构体”这个词是根据英文单词structure译出的。
2、structSTUDENT是定义的数据类型的名字,它向编译系统声明这是一个“结构体类型”,包括name、num、sex、age、score、addr等不同类型的项。
3、structSTUDENT与系统提供的int、char、float、double等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的。
C. C语言全局结构体变量问题,编译无错,运行报错error Link
你在函数里面定义的怎么能叫全局变量呢,把UserInfo A;拿到外面
D. 在C中如何定义一个全局结构体
首先要在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;
这样应该就可以使用了,你试试吧~~~【上周刚刚这样用过
E. c语言 有没全局结构体类型数组
上面的结构就是一个结构数组,在a()函数中输入student1的值,在b()函数中是能输出结构数值的。如果输不出,也不是这里定义的问题,是别的什么问题。
F. C语言 全局结构体数组的问题
没问题,全局结构体数据和全局int类型数组一样的使用方法。示例代码如下。
输入1 2 3 4 5
输出1 2 3 4 5
#include<stdio.h>
structtest
{
inta;
};
structtesttest_a[5];
voidintput()
{
inti;
for(i=0;i<5;i++)
{
scanf("%d",&(test_a[i].a));
}
}
voidoutput()
{
inti;
for(i=0;i<5;i++)
{
printf("%d",test_a[i].a);
}
}
intmain(){
intput();
output();
return0;
}
G. C语言结构体是全局的
在函数外面定义的变量,都称为全局变量。
只要在某个地方改变了,后面看到的都是改变了的结果。
比如:在一个函数中给它赋了值,在另一个函数中取出还是该值。
H. c语言全局结构体变量定义初始化
我觉得是你用的编译器不太严格,或者非常智能
如果是
extern stNum a;
stNum a = {1, 2};
还容易理解一点
I. C语言中如何定义全局结构体变量
结构的定义
用户定义自己所需要的结构型,可以采用下列定义语句:
struct结构型名
{数据类型符1成员名1;
数据类型符2成员名2;
数据类型符3成员名3;
...
数据类型符n成员名n;
};
定义结构型变量的方法有三种,在定义的同时,可以给变量的每个成员赋初值。
先定义结构型,后定义变量
例如:
structstudent
{longnumber;
charname[10];
charsex;
floatscore[3];
};
...
structstudentx,y;/*定义student结构型的变量x和y*/
在定义结构型变量的同时,可以对结构型变量的所有成员赋初值。
例如:
structstudentx={100001L,"zhao1",'f',{89,94,86}},
y={100002L,"zhao2",'m',{78,86,92}};
2.定义结构型的同时定义变量
这种方法是将结构型的定义和变量定义同时进行。然后仍然可以使用这种结构型来定义其他的变量。
例如:
structstudent
{longnumber;
charname[10];
charsex;
floatscore[3];
}x={1000001L,"zhao1",'f',{89,94,86}};/*定义结构型同时定义变量并赋值*/
...
structstudenty={100002L,"zhao2",'m',{78,86,92}}
/*这个语句是正确的是因为前面定义了数据类型符structstudent*/
3.定义无名称的结构型的同时定义变量
这种方法是将结构型定义和变量的定义同时进行,但省略了结构型的名称,以后将无法使用这种结构型来定义其他变量。例子与2的例子差不多,只是因为没有定义结构型的名称,所以后面对y的赋值就不可用。
从变量的生存期来分,我们把生存期覆盖了定义点到整个程序结束的变量成为具有全局寿命的变量,简称“全局变量”。
习惯上结构定义都是在main函数之前的,从这一点上看,结构都是全局变量,不知道这样回答是不是让你满意。
J. C语言 自定义全局变量里面的结构体数组的长度
你没有申请struct的空间,只是声明了啊,在main里加入:
student stu[10]; 就OK了
怎么可能不需要啊,你说链表中需要,那是肯定的
像这样,简单点说就是你把student看成是跟int,float,double一样的基本类型,这样你就会处理了,你认为int stu[10];这样的东西都不需要申请空间吗?如果不申请,那好比这样:
int *a;//这里只有个指针,并没有实际的空间
a=new int(10);这样才做了申请空间的动作;
以上2个语句何以:
int a=10;//这样便达到了上边2条语句的效果
但有一点不同就是new分配的是堆空间,这跟直接int i=10;不一样!
但效果是一样的!
如果是C语言的全局变量,这就不需要申请空间,全局变量生命周期在整个程序开始到结束!