c语言中数组相关问题:
1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
2.语法: 数据类型 + 数组名+[元素个数]
3.初始化:初始化方式: int a[5]={1,2,3,4,5}。
编译器会根据初始化使用的元素个数自动提供个数。比如:inta[]={1,2,3},元素个数为3.
数组使用时应该注意的事项:
1,如果初始化时在后方元素赋值不全,没有初始化的元素,默认值为0 ;
2.数组中每一个变量称为元素。每个变量的位置是确定的。使用从0开始的序号进行访问。序号称为下标或者索引。
3.存放一维数组的数组称为二维数组。
4.数组的类型:数据类型表示数组元素的类型是什么。元素中的数据类型是统一的。
5.数组元素个数不允许时浮点数。可以是整数表达式。数组元素就是变量,直接可以用:如sum=a[1]+a[2];
6数组初始化方式:如:inta[5]={1,2,3,4,5},如果初始化时不完全:没有初始化的元素,默认值为0 ;
7.编译器会根据初始化使用的元素个数自动提供个数,如下文:
int a[]={1,2,3},元素个数为3.,sizeof(a)=12(每个元素占四个字节所以一共12字节);
14,使用数组求n个数的统计
15.栈和堆的概念。利用数组模拟栈的结构。
下面介绍一个数组在打印的时候溢出的问题:
//
// main.c for Xcode6.0
// 当我定义了一个可以盛放十个元素的数组arry[10]并赋值之后,使用printf函数加一个for循环体进行打印,这个时候有趣的事情发生了:
在printf下方的循环体中,由于循环条件设置不当,导致我对数组的打印下标越界。当打印a[10]时,printf函数自动将内存中本来存在的乱码打印出来了。
所以,下标越界问题,是程序猿使用数组时经常犯,也必须注意的问题。因为,这个bug编译器是不会报错的。
其实内存中数组的存放方式是这样的:
版权声明:本文为博主原创文章,未经博主允许不得转载。