‘壹’ c语言中怎样在头文件中定义一个能够在所有文件中都可以使用的全局数组变量
C语言可以通过在.c文件中定义,头文件中extern的方式实现一个能够在所有文件中都可以使用的全局数组变量。
具体做法如下:
设有一个多项目文件有 1.c、2.c和3.c三个源程序文件;
如果有一个全局数组需要所有文件使用,那么可以添加一个data.c文件,在其中添加全局数组的定义;
向项目中添加data.h文件,在data.h文件中用 extern声明该数组;
只需要在相应的.c文件中添加#include "data.h",那么久可以使用data.c中的全局数组了。
‘贰’ 怎么用C语言定义一个无限长的数组
C语言支持定义一个不显式定义长度的数组,即通过初始化数据来分配数组长度。
比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出,由于有5个初始化数据,所以分配空间长度为5个int型。
但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。
1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。
通过下面例子来理解该方法:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intsize=100;//最初为100个元素空间。
int*a=NULL;
inti=0;
a=malloc(sizeof(int)*size);
if(a==NULL)return-1;
while(scanf("%d",a+i)==1)//循环向a中输入数据,直到输入非数值字符为止
{
i++;
if(i==size)//数组空间不足
{
size*=2;//将数组空间扩大二倍,也可以改用size+=100;之类的操作,使size每次增加固定值。
a=realloc(a,size);//分配新的空间
if(a==NULL)
{
return-1;//这种情况下运行载体(如PC)内存不足以提供,中断程序。
}
}
}
if(a)free(a);//对申请的内存进行释放。
return0;
}
从以上程序可以看到,这种方式的原理就是每当数组空间不足时,利用函数realloc分配一段新的内存空间以增大数组长度。 直到占满所有剩余空间。
如果到占满所有空间还是无法存下数据,那么是硬件无法支持了。
所以这种方法可以做到软件意义上的无限大数组空间。
但是这种方法代码量比较大,而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法。
2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见,定义一个长度为1000的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。
‘叁’ c语言,如何定义数组为全局变量
在C语言中,全局变量和函数声明及定义并列,也就是说,声明在最外层作用域的变量即为全局变
如在如下程序中
inti;
intmain()
{
inti_=i;
i=9;
return0;
}
int i就是一个全局变量,故在main函数中可以调用或修改i的值
所以,定义数组也和普通全局变量的方法相同,如
charstr[10];
intmain()
{
str[0]='a';
str[1]='