c语言的数组初始化
在c语言中,有两种初始化方法。 是一维数组。
方式1
int arr[20];
在该方式中,在c语言的编译阶段,在对数分量中分配了固定的存储器空间,但在没有给c语言分配值的情况下,在打印该数组时输出随机数字。
方式2
intarr [ ]={ 2,3,4,5,6,7,8 };
同样,在编译阶段给数组分配连续的内存空间,但此时的长度如果不写,由给定元素的个数程序自己决定。
综上所述,在c语言中,如果使用以上方法初始化数组,则在编译阶段将确定数组长度。 也就是说,排列长度一定。 看看下面的例子。
int size=20;
int arr[size];
编译上面的代码将报告错误,指示数组初始化有问题。 这是因为编译器不知道数组的大小,也无法分配内存,从而导致错误。
那么,用c语言实现数组大小动态调整的方法是什么呢? 我们知道c语言数组是内存中连续的内存空间,其中指针指向第一个元素,即第一个元素的地址。 验证一下:
int a[20]={1};
printf(%d(n ),*a ); //输出1等效于printf(%d(n ),a[0] );
因此,用指针方式动态生成数组,实现如下
int size=20;
int*a=(int* ) malloc ) * sizeof (int ) size );
首先定义指针,然后利用malloc函数分配连续的内存空间。 这里与数组的实现相同。 用指针方式,动态地创建了数组。