• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c语言之数组初始化

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在c语言中,我们经常会有两种初始化的方式(一维数组):

方式一

int arr[20];

这种方式是在c语言编译阶段对数组分配了固定的内存空间,但没有为c语言赋值,此时,对该数组进行打印输出的话,则会输出随机的数字。

方式二

int arr[] = {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函数为其分配一段连续的内存空间,这里就和数组的实现是一样的了,通过指针的方式,动态地创建了我们的数组。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++拷贝构造函数发布时间:2022-07-13
下一篇:
c++中的.hpp文件发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap