码迷,mamicode.com
首页 > 编程语言 > 详细

C语言之数组

时间:2017-10-28 20:25:08      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:程序   语言   如何   方法   需要   存储   blog   div   double   

数组

1.数组在内存中的存储

数组是一些某种类型的数据的集合,这些数据在内存中连续存储,相邻的数据之间没有间隔。

某种类型:它可以是指基本的数据类型,路int类型,float类型,char类型,double类型等等,同时也可以是指针,

如果是指针的话,那么这个指针可以指向基本的数据类型,如指向int类型,指向double类型等,还可以指向一个数组,还可以指向一个函数

 

下面以一个简易的示意图来说明数组(以int类型的数组为例):

声明一个5个元素的int类型的数组(暂不初始化) ---

int arr[5];

那么这5个int类型的数据在内存中的存储方式是这样的(为了便于区别,用了不同的颜色进行表标注,每个方格里面的...表示未定义值):

在机器中,一般来讲,一个int类型的数据占据4个字节的空间,因此,5个int类型的数据需要20字节的内存空间。


技术分享

 在这里有两个概念需要区分:

数组的长度和数组占用的内存空间的长度

数组的长度是数组中元素的个数,我们的示例 -- int arr[5] -- arr的长度就是5

但是,数组arr在内存中的内存空间的长度却不是5,应该是5 x 4 = 20 字节

下面这段代码用于计算,数组在内存中的字节数:

int main()
{
    int arr[5];

    printf("%d\n", sizeof(arr));

    return 0;
}

程序输出结果:

技术分享

那要如何计算数组元素的个数呢?

可以用数组在内存中的字节数去除以每个元素=的字节数,就是元素的个数:

printf("%d\n", sizeof(arr)/sizeof(int));

 

2.数组的初始化

在了解了数组在内存中的存储之后,就需要给数组中的每一个元素赋值,以便使用了,数组的初始化有这样一些方法:

1. 

int arr[5] = {1, 2, 3, 4, 5};

在声明的时候,给出每个元素的初始化值

2. 部分初始化

int arr[5] = {1, 2, 3};

声明了5个元素,但是只给出了3个值,注意,这三个值是数组arr的前三个元素的值,元素4 和元素5会被编译器默认为初始值为0

3. 不给出数组的长度

int arr[] = {1, 2, 3, 4, 5};

这种初始化方法,编译器会默认数组的长度是5

 

C语言之数组

标签:程序   语言   如何   方法   需要   存储   blog   div   double   

原文地址:http://www.cnblogs.com/SunnyD/p/7747825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!