c语言函数中变长数组 c语言变长数组定义

C语言怎样定义变长数组

”变长数组“确实是有的,是在C99标准才出现的。题主的写法没有错。变长指的就是可以用变量指定数组大小,而不是说数组大小可以在runtime改变。(”变长“这个这个翻译很怪啊.....)

成都创新互联公司专注于新会网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供新会营销型网站建设,新会网站制作、新会网页设计、新会网站官网定制、小程序制作服务,打造新会网络公司原创品牌,更为您提供新会网站排名全网营销落地服务。

写全的话应该是

int x = 2; //x定义并赋值,当然不一定是2

char array[x];测试了一下,这样的代码在VC6.0下会报错,因为对C99新标准没有很好地实现。VS2005也不行。VS2013可以正确编译。gcc

3.2.2也可以正确编译。

c语言变长数组

int main()

{

unsigned char n;

for(n=0;n10;n++)

{

char x[n]; //注意变长数组必须在程序块内定义,不能在文件内定义

x[n]=n;

printf("%d",x[n]);

fflush(stdout);

}

return 0;

}

GCC实测通过

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

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

#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语言变长数组如何实现(接收用户数据的数组)

你的想法是可以的。

实际上C提供一个标准的库函数可以实现这个功能。

void *realloc(void *mem_address, unsigned int newsize);

譬如:

int *p = malloc(sizeof(int)*3);

p[0]=0;p[1]=1;p[2]=2;

p = realloc(p, sizeof(int)*4);

这个时候,p指向的前三个int的值还是1、2、3,而且可以对第四个int赋值了。realloc会自动把原来的数据复制到新的内存空间上去。


当前名称:c语言函数中变长数组 c语言变长数组定义
文章来源:http://ybzwz.com/article/doghcdp.html