c语言二维数组讲解_C语言是什么语言「建议收藏」

c语言二维数组讲解_C语言是什么语言「建议收藏」目录1.二维数组的定义和初始化2.二维数组在内存中的存储3.二维数组的使用4.二维数组的应用实例_c语言二维数组

目录

1.二维数组的定义和初始化
2.二维数组在内存中的存储
3.二维数组的使用
4.数组与函数

1. 二维数组是定义和初始化

1.1 二维数组的定义

     定义类型:类型名 数组名[ 行表达式 ][ 列表达式];行与列用常量表达式。

1.2 二维数组的初始化

/** 定义数组 */
int main()
{ 
   
	int		ar[3][4];		// 3 行 4列 未初始化
	char	br[3][4];
	double	cr[3][4];
	return 0;
}

2. 二维数组在内存中的存储

2.1 二维数组的逻辑表示
在这里插入图片描述
     注:一个二维数组,在本质上是有多个一维数组构成。(每一个一维数的大小必须相同)

     例如:定义 int ar[ 3 ][ 4 ] 的二维数组,它是由 3 个一维数组组成,每个一维数组的大小是 4 个整型元素。可以只对部分元素赋值,未赋值的元素自动取 0 值。

2.1 二维数组的物理表示(按行优先存储
在这里插入图片描述
     注: 如果对二维数组的初始化,那么第一维的长度是可以缺省的,但是第二维不可缺省

int main()
{ 
   
	int ar[][4] = { 
    1,2,3,4,5,6,7,8,9,10,11,12 };		// 3 行 4 列
	int br[][4] = { 
    { 
   1,2},{ 
   3,4},{ 
   5,6} };				// 3 行 4 列 数字不足自动补 0
	int cr[][4] = { 
    1,2,3,4,5,6,7,8 };					// 2 行 4 列
	return 0;
}

调试结果
在这里插入图片描述

3. 二维数组的使用

     二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。

     示例

#include<stdio.h>
/** 二维数组的应用 */
int main()
{ 
   
	int ar[3][4];						// 定义二维数组
	int x = 0;
	for (int i = 0; i < 3; ++i)
	{ 
   
		for (int j = 0; j < 4; ++j)
		{ 
   
			ar[i][j] = ++x;				// 初始化
		}
	}
	for (int i = 0; i < 3; ++i)
	{ 
   
		for (int j = 0; j <; ++j)		// 打印
		{ 
   
			printf("&ar[%d][%d]=>%#p %d\n",i, j, &ar[i][j], ar[i][j]);
		}
	}
	return 0;
}

运行结果
在这里插入图片描述
     总结:C 语言中的多维数组基本的定义是以数组作为元素构成的数组,二维数组的数组元素是一维数组,三维数组的数组元素是一个二维数组,以此类推。也就是说,多维数组用的是一个嵌套的定义。

4. 数组与函数

     ①. 示例一:一维数组作为函数的形参

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

/** 初始化函数 */
//void Init_Array(int ar[], int n) 数组名退化为指针
void Init_Array(int* ar, int n)
{ 
   
	assert(ar != nullptr && n > 1);		// 断言机制 如果为真则继续进行以下代码
	for (int i = 0; i < n; ++i)
	{ 
   
		ar[i] = rand() % 100;
	}

}

/** 打印函数 */
void Print_Array(int* ar, int n)
{ 
   
	assert(ar != nullptr && n > 1);
	for (int i = 0; i < n; ++i)
	{ 
   
		printf("%5d", ar[i]);
	}
	printf("\n");
}

int main()
{ 
   
	int ar[10];
	int n = 10;
	Init_Array(ar, n);
	Print_Array(ar, n);
	return 0;
}

运行结果
在这里插入图片描述
     ②. 示例二:二维数组作为函数的形参

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

/** 初始化函数 */
void Init_Array(int ar[][4], int row, int col)
{ 
   
	for (int i = 0; i < row; ++i)
	{ 
   
		for (int j = 0; j < col; ++j)
		{ 
   
			ar[i][j] = rand() % 100;
		}
	}
}

/** 打印函数 */
void Print_Array(int ar[][4], int row, int col)
{ 
   
	for (int i = 0; i < row; ++i)
	{ 
   
		for (int j = 0; j < col; ++j)
		{ 
   
			printf("%5d", ar[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}

int main()
{ 
   
	int row = 3, col = 4;
	int ar[3][4];
	Init_Array(ar, row, col);
	Print_Array(ar, row, col);
	return 0;
}

运行结果
在这里插入图片描述
     一维数组的知识点详见《C语言之一维数组(详细版)》,请点击此处进行查阅…

今天的文章c语言二维数组讲解_C语言是什么语言「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/77187.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注