C语言二维数组 int arr[2][3]

Posted DQ_CODING

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言二维数组 int arr[2][3]相关的知识,希望对你有一定的参考价值。

基础使用

先遍历行再遍历列

#include<stdio.h>
//二维数组的基本使用
int main()
{
	//二维数组的初始化
	int arr1[2][2]={{2,2},{0,0}};
	int arr2[2][3]={2,2,2,8,8,8};

	int arr3[6][9];
	int i,j;
	for(i=0;i<6;i++)
	{
		for(j=0;j<9;j++)
		{
			arr3[i][j]=1;
		}
	}
	arr3[2][5]=0;

	//打印
	printf("arr1:\\n");
	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("%d ",arr1[i][j]);
		}
		printf("\\n");
	}


	printf("arr2:\\n");
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d ",arr2[i][j]);
		}
		printf("\\n");
	}

	printf("arr3:\\n");
	for(i=0;i<6;i++)
	{
		for(j=0;j<9;j++)
		{
			printf("%d ",arr3[i][j]);
		}
		printf("\\n");
	}
	getchar();
	return 0;
}

内存布局

元素的地址连续分布,每一个元素在前一个的基础上加4(int)

#include<stdio.h>
//二维数组的内存布局
int main()
{
	//二维数组的初始化
	int arr[2][2]={{2,2},{0,0}};
	
	int i,j;

	//打印
	printf("arr1:\\n");
	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("%d ",arr[i][j]);
		}
		printf("\\n");
	}

	//打印首地址
	printf("arr的首地址:%p\\n",arr);
	printf("arr[0]的地址:%p\\n",arr[0]);
	printf("arr[0][0]的地址:%p\\n",&arr[0][0]);


	//打印所有地址
	printf("所有地址:\\n");
	for(i=0;i<2;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("arr[%d][%d]的地址:%p\\t",i,j,&arr[i][j]);
		}
		printf("\\n");
	}
	getchar();
	return 0;
	
}
//输出:
//arr1:
//2 2
//0 0
//arr的首地址:0055F7F0
//arr[0]的地址:0055F7F0
//arr[0][0]的地址:0055F7F0
//所有地址:
//arr[0][0]的地址:0055F7F0        arr[0][1]的地址:0055F7F4
//arr[1][0]的地址:0055F7F8        arr[1][1]的地址:0055F7FC

行和列

#include<stdio.h>
int main()
{
	int arr[2][3]={{2,6,8},{3,0,1}};
	//sizeof(arr):2x3x4=24  整个二维数组的字节
	//sizeof(arr[0]):3x4=12   第一行的字节
	//行:
	int row=sizeof(arr)/sizeof(arr[0]);//24/12=2

	//列:
	//sizeof(arr[0]):3x4=12   第一行的字节
	int col=sizeof(arr[0])/sizeof(int);//12/4=3
	printf("行:%d 列:%d",row,col);
	getchar();
	return 0;
}

案例:计算平均成绩

方式1:

#include<stdio.h>
int main()
{
	double student[3][5];
	int row=sizeof(student)/sizeof(student[0]);
	int col=sizeof(student[0])/sizeof(double);
	int i,j;
	double s1=0,s2=0,s3=0,s=0;
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			scanf("%lf",&student[i][j]);
			s+=student[i][j];

		}

	}

	for(j=0;j<col;j++)
	{
		s1+=student[0][j];
		s2+=student[1][j];
		s3+=student[2][j];
	}

	printf("所有班的平均成绩:%.2f\\n",s/(row*col));
	printf("1班的平均成绩:%.2f\\n",s1/col);
	printf("2班的平均成绩:%.2f\\n",s2/col);
	printf("3班的平均成绩:%.2f\\n",s3/col);
	getchar();//enter
	getchar();
	return 0;
}

方式2:

#include<stdio.h>
int main()
{
	double student[3][5];
	int row=sizeof(student)/sizeof(student[0]);
	int col=sizeof(student[0])/sizeof(double);
	int i,j;
	double a=0,s=0;
	for(i=0;i<row;i++)
	{
		a=0;
		for(j=0;j<col;j++)
		{
			scanf("%lf",&student[i][j]);
			a+=student[i][j];
			s+=a;
		}
		printf("%d班的平均成绩:%.2f\\n",i+1,a/col);
		
	}
	printf("所有班的平均成绩:%.2f\\n",s/(row*col));

	getchar();//enter
	getchar();
	return 0;
}

注意事项

以上是关于C语言二维数组 int arr[2][3]的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么定义一个二维数组可以使每行的输入长度任意

C语言 二维数组做参数的形式

C语言 二维数组做参数的形式

c语言二维数组

java二维数组

在函数 C 中分配内存二维数组