189 8069 5689

c语言函数声明数组长度 c语言定义数组长度问题

c语言中如何自定义数组长度

动态分配的数组可以自定义数组的长度,示例如下:

10余年的海口网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整海口建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“海口网站设计”,“海口网站推广”以来,每个客户项目都认真落实执行。

#include stdio.h

#include string.h

#include stdlib.h

int main()

{

printf("输入要分配的内存大小:");

int size;

scanf("%d", size);  //输入自定义的数组长度

int *pstart = (int *)malloc(sizeof(int) *size);

if (pstart==0) {

printf("不能分配内存\n");

return 0;

}

memset(pstart, 0x00, sizeof(int) * size);

int inx;

for (inx=0; inx!=size; ++inx) pstart[inx] = inx;

for (inx=0; inx!=size; ++inx) printf("%d\t", pstart[inx]);

printf("\n");

return 0;

}

c语言中数组长度怎么设置?

定义数组时在中括号内写上代表长度的数字,定义一维数组和二维数组是一样的。

注意长度是直接用数字大小来代表,而索引时是从0开始算的!

例如:

#includestdio.h

main(){

int a[5];//定义一个长度为5的一维数组a

int b[5][6];//定义一个5行6列的二维数组b

}

在定义数组时可以不定义长度,可以由编译器来决定,只要在定义时赋值就可以了,这时括号内可以不写数值。

例如:

#includestdio.h

main(){

int a[] = {0,1,2,3,4};//定义一个长度为5的数组,内容为0,1,2,3,4

}

怎么用C语言定义一个无限长的数组?

C语言支持定义一个不显式定义长度的数组,即通过初始化数据来分配数组长度。

比如int a[] = {1,2,3,4,5}; 数组a的长度没有显式给出,由于有5个初始化数据,所以分配空间长度为5个int型。

但是无论如何定义,数组的长度都是固定的,在定义的时候就已经分配好空间,从这个角度上C语言无法定义无限长的数组。但很多实际应用中又事先无法确定数组的长度,对于这类情况,一般有两种方法可以使用。

1 由malloc和realloc两个函数,分配动态空间,随时按需改变数组的最大长度。

通过下面例子来理解该方法:

#include stdio.h

#include stdlib.h

int main()

{

int size=100;//最初为100个元素空间。

int *a = NULL;

int i = 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);//对申请的内存进行释放。

return 0;

}

从以上程序可以看到,这种方式的原理就是每当数组空间不足时,利用函数realloc分配一段新的内存空间以增大数组长度。 直到占满所有剩余空间。

如果到占满所有空间还是无法存下数据,那么是硬件无法支持了。

所以这种方法可以做到软件意义上的无限大数组空间。

但是这种方法代码量比较大,而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法。

2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见,定义一个长度为1000的数组,并对其操作。这样在操作范围内,这个就是一个“无限长”的数组了。

c语言获得数组的长度

1、c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)。

例如:

double a[] = {1,2,3,4};

int length;

length=sizeof(a)/sizeof(a[0]); //数组占内存总空间,除以单个元素占内存空间大小

printf(“length of a=%d”, length ); //输出length of a=4

2、但是,通过传递数组名参数到子函数中,以获得数组长度是不可行的。

例如:

int getLength(int a[]){

int length;

length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1

return length;

}

因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。

3、因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果


网站名称:c语言函数声明数组长度 c语言定义数组长度问题
网页URL:http://jkwzsj.com/article/hhphij.html

其他资讯