零基础玩转C语言|数组-创新互联
- 前言
- 一、一维数组
- 1.1 一维数组的创建
- 1.2 一维数组的初始化
- 1.3 一维数组的使用
- 1.4 一维数组在内存中的存储
- 二、二维数组
- 2.1 二维数组的创建
- 2.2 二维数组的初始化
- 2.3 二维数组的使用
- 2.4 二维数组在内存中的存储
- 三、数组越界
- 四、总结
前言
什么是数组——数组是一组相同类型元素的集合
一、一维数组 1.1 一维数组的创建数组的创建方式:
type_name arr_name [count_value]
// type_name::数组元素的类型
// arr_name:数组名
// arr_name:数组元素的个数(可以省略)
数组创建的实例:
// 代码1
int arr1[10];
//代码2
char arr2[];
下面数组可以正常创建吗?
int count=10;
int arr3[count];
答案是:不可以。因为数组创建,在C99标准之前,[ ]中要给一个常量才可以,上述创建数组中,count是一个整型变量
1.2 一维数组的初始化
数组的初始化是指,在创建数组的同时给数组内容一些合理的初始值
代码实例:
- int arr1[3]={1,2,3} 创建一个名为arr1的数组,数组元素个数为3,元素分别为:1,2,3
- int arr2[ ]={4,5,6} 创建一个名为arr2的数组,创建时未指定数组元素个数,编译器会根据初始化的值,自动设置为3
- int arr3[10]={7,8,9} 这种初始化方式称为不完全指定,数组的总元素为10,arr3的前三个元素分别初始化为7,8,9,后面7个元素自动初始化为0
1.3 一维数组的使用
对于数组的使用,常用的操作符为:[ ] 下标引用操作符
代码示例:
# includeint main()
{int arr1[10]={1,2,3,4,5,6,7,8,9,0};
int length=sizeof(arr)/sizeof(arr[0]); //计算数组元素个数
int i=0;
//输出数组的内容
for (i=0;i printf("%d",arr[i]);
}
return 0;
}
1.4 一维数组在内存中的存储
接着我们来探讨一下数组在内存中的存储
我们输出数组每一个元素的地址,代码如下:
# includeint main()
{int arr[]={1,2,3,4};
int length=sizeof(arr)/sizeof(arr[0]); //计算数组元素个数
int i=0;
//输出数组的内容
for (i=0;i printf("&arr[%d]=%p\n",i,&arr[i]);
}
return 0;
}
结果如下:
随之数组下标的增长,元素的地址也在有规律的地址,相邻两个元素之间的地址相差4个字节,这也正是存储一个整型变量需要的字节数。
因此我们得出结论:数组在内存中是连续存放的
二、二维数组 2.1 二维数组的创建
和一维数组创建类似
type_name arr_name [row_value] [column_value]
// type_name::数组元素的类型;
// arr_name:数组名
// row_value:二维数组行数(可以省略)
// column_value:二维数组列数(不可省略)
例如:int arr[2][3], char arr2[][4]
2.2 二维数组的初始化
int arr1[2][2]={{1,2},{3,4}} 完全初始化
int arr2[3][4]={{5,6,7},{3,4}} 不完全初始化,剩下元素自动补0
2.3 二维数组的使用
二维数组的使用也是通过下标的方式
代码实例:
# includeint main()
{int arr[][2]={{2,3},{1}};
int i=0,j=0;
for (i=0;i<2;i++)
{ for (j=0;j<2;j++)
printf("%d ",arr[i][j]);
}
return 0;
}
输出:2 3 1 0
2.4 二维数组在内存中的存储
我们输入上述arr[][2]数组的每一个元素的内存地址:
二维数组在内存中也是连续存储的
三、数组越界
- 数组的下标是有范围限制的。数组规定下标从0开始,如果有n个元素,那么最后一个元素的下标就是n-1。
- 所以数组的下标如果小于0,或是大于n-1,就是越界访问了,超出了数组合法空间的访问。
- C语言本身不会做数组下标越界的检查,编译器也不一定报错,但是编译器不保错,并不意味程序就是正确的。
四、总结
本文介绍了C语言数组的知识,数组就是一组同类型数据的集合。包括一维数组和多维数组,从数据的建立和使用。
好了,以上就是C语言数组的全部内容了,看到这里想必友友们对数组的理解又通透了点儿,对您有帮助的话不妨来个三连加关注支持一下,后期会持续更新C语言干货!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
新闻名称:零基础玩转C语言|数组-创新互联
本文URL:http://myzitong.com/article/dhoijg.html