C语言基础知识(4): 数组


注:转载请标明原文出处链接:https://xiongyiming.blog.csdn.net/article/details/105300636


1 数组简介

在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

为什么需要数组?
数组可以解决大量同类型数据的存储和使用。



2 一维数组

2.1 一维数组的定义

数组元素是组成数组的基本单元。一维数组的形式可以表示为:

int a[5]; //定义整型数组数组a包含5个元素

数组元素的条件:

  1. 为n个变量连续分配存储空间;
  2. 所有变量的数据类型必须相同;
  3. 所有变量所占的字节大小必须相等;



2.2 一维数组的使用

初始化方式有

//方式1: 
int a[5]={1,2,3,4,5};  

//方式2: 
int a[5]={1,2,3};//不完全初始化时,未初始化的元素自动为0 

//方式3: 
int a[5];//所有元素值均为随机值  

//方式4: 
int a[5]={}; //所有元素值清零  

//方式5: 
int a[]={1,2,3,4,5};

常见的错误初始化有

int a[5];   
a[5]={1,2,3,4,5};//错误 只有在定义数组的同时才能够整体赋值,其他情况均错误。

int a[5]={1,2,3,4,5};  
a[5]=666;//错误 没有a[5]这个元素,最大为a[4]

int a[5]={1,2,3,4,5};  
int b[5];  
b=a;//错误  a表示数组a第一个元素的地址,应使用for循环将按数组的元素逐个赋值给数组b



2.3 举例

要求:键盘输入数组10个元素,然后依次打印出来。

代码示例

#pragma warning( disable : 4996)
#include<stdio.h>
#include<iostream>


int main()
{
	
	int a[10];
	printf("请输入10个整数:\n");
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &a[i]);
	}

	printf("输入10个整数依次为:\n");

	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", a[i]);
	}

	system("pause");
	return 0;
	

}

运行结果

在这里插入图片描述



3 二维数组

3.1 二维数组的定义

int a[3][4]; 表示数组总共12个元素,可认为是34列,12个元素依次表示为: 
a[0][0]  a[0][1]  a[0][2]  a[0][3]   
a[1][0]  a[1][1]  a[1][2]  a[1][3]   
a[2][0]  a[2][1]  a[2][2]  a[2][3]


a[i][j]表示第i+1行,第j+1列元素
int a[m][n];  该数组右下角位置的元素只能是a[m-1][n-1]

:二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是像一维数组只是一个向量。但是,实际的内存却是连续编址的,也就是说内存是按一维线性排列的。如何在一维存储器中存放二维数组,有两种方式:
一种是按行排列,即放完一行之后顺次放入第二行。
另一种是按列排列,即放完一列之后再顺次放入第二列。
在C语言中,二维数组是按行排列的。即:先存放 a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。



3.2 二维数组的使用

初始化

//方式1: 
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

//方式2:
	int a[3][4] = { {1, 2, 3, 4},
	                {5, 6, 7, 8},
	                {9,10,11,12}
	};

//方式3:
int a[3][4]={1,2,3};//未初始化的元素自动为0


//方式4:
int a[3][4]={{1},{2},{3}};//未初始化的元素自动为0


//方式4:
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//数组全部赋值,
                                        //则第一维的长度可以不给出,因为是按行存储的

:n维数组:因为内存是线性一维的,则n维数组可以当做每个元素n-1维数组的一维数组。

发布了187 篇原创文章 · 获赞 2039 · 访问量 97万+

猜你喜欢

转载自blog.csdn.net/zaishuiyifangxym/article/details/105300636
今日推荐