【C语言】一维数组和二维数组
来源:互联网 发布:中国网络日报 编辑:程序博客网 时间:2024/05/22 05:21
1. 解析一维数组的创建和初始化:
创建:创建一维数组时,需有数组类型,数组名,以及数组的大小(可有可无,若没有大小则在初始化时,根据初始化的内容自动分配)。
初始化:数组在使用前必须明确数组的元素已经被赋予确定的值。
初始化可以有以下两种方法:
(1)在数组定义时就赋给数组确定的值;
(2)先给数组一个声明,然后用赋值语句或输入语句给它赋值。
int arr[];arr[4]={1,2,3};//这种初始化是不允许存在的
2. 一维数组的使用
数组元素的引用形式为
数组名[下标] arr[i]
下标为常量表达式。C语言规定只能逐个引用数组元素,而不能一次引用整个数组 。数组元素的下标从0开始,最后一个元素下标为 sizeof(arr)-1。
3.一维数组的存储
一维数组存储在内存的一个连续的存储区。
4.一维数组的指针访问
在内存中存放的数据都有一个具体的地址,数组也具有具体的地址。数组名表示数组的首地址。指针变量是专门用来存放地址的。
- 如果指针p指向数组a[20]的第一个元素,那么 p+1 就指向数组的第二个元素,以此类推可知,p+i 指向的是数组的第 i+1 个元素,但指的却是数组 a[i] 的地址,a[i] 也可以用
*(p+i)
或*(a+i)
表示。
5.二维数组的创建与初始化
二维数组的每个元素具有相同的数据类型。
形式一般为数据类型 数组名[行数常量表达式][列数常量表达式]
二维数组的初始化方法有以下几种:
int arr[5][4];//定义
int arr[3][4] = {{1,2,3},{4,5,6},{7,8,9}};//初始化
按行赋初值;
int a[3][4] = {{1,2,3},{4,5,6},{7,8,9}};
// 在没有赋初值的地方,默认为0。
按顺序赋初值;
int a[3][4] = {1,2,3,4,5,6,7};
使用关键字
static
赋初值 ;
static int a[2][3];//默认所有元素为0
对部分元素赋初值
全部赋值时第一维长度可以略去
通过赋值语句逐个给元素赋值
同样,在二维数组中, int a[3][4];a[3][4]={1,2,3,4,5,6,7};// 也是不允许的
6.二维数组的使用
二维数组必须先定义后使用,可进行赋值运算,取地址运算,算术运算(加减乘除等)。
可通过下标的方式使用。代码如下:
#include<stdio.h>int main(){ int arr[3][2] = {0}; int i; int *p = &arr[0][0];//指针指向二维数组的首元素 for (i = 0; i < 3*4; i++) { p[i] = i; } for (i = 0; i < 3; i++) { int j; for (j = 0; j < 2; j++) { printf("%d ", arr[i][j]); } printf("\n"); } system("pause"); return 0;}
7.二维数组的存储
二维数组在内存中是连续存储的。
8.二维数组的指针访问
二维数组与一维数组大同小异。
如果指针p指向数组a[2][3]的第一个元素,即a[0][0],那么 *(p+1)
就指向数组的第二个元素a[0][1]…….
- C语言一维数组和二维数组的使用
- 【C语言】一维数组和二维数组
- C语言一维数组&&二维数组练习
- C语言指针与二维数组(二维数组与一维数组关系)
- 一维数组和二维数组的转换表示(C#)
- 初识c#---一维数组和二维数组
- 静态二维数组和动态二维数组(C语言)
- C动态一维数组,二维数组
- C语言实现动态一维/二维数组的申请
- 一维/二维动态数组分配(C语言)
- C语言二维数组
- C语言二维数组
- c 语言 二维数组
- c语言-二维数组
- C语言二维数组
- C语言 二维数组
- C语言 二维数组
- C语言二维数组
- springMvc的上传与下载
- 4个关键,如何清晰的做好数据分析
- (原创)python函数内部函数
- 一个可以监控U盘接入、自动拷贝文件到U盘、自动移除U盘的小程序
- 使用Solr索引MySQL数据
- 【C语言】一维数组和二维数组
- Spring解决乱码问题
- React Native未来导航者:react-navigation 使用详解
- 表达式计算
- 7 firewalld打开关闭防火墙与端口
- 9 种改善 AngularJS 性能的方法
- ORM的概念, ORM到底是什么
- Singleton的7种实现
- spring事务和myBatis事务的设置