大魔王程序员生成记#07#C语言基础——二维数组

14 篇文章 0 订阅

二维数组定义:

类型说明符  数组名  [常量表达式][常量表达式];

第一个[常量表达式]表示“行”;第二个[常量表达式]表示“列”。

二维数组初始化:

int main()
{
        int arr[2][3]={{1,2,3},{4,5,6,}};
	int arr2[2][3]={1,2,3,4,5,6};
	int arr3[2][3]={};//0
	int arr4[2][3]={0};
	int arr5[2][3];//随机值  0xcccccc烫烫烫
	int arr6[][3]={1,2,3,4,5,6};
	int arr2[2][]={1,2,3,4,5,6};//error 编译器不会确定列数
	int arr7[2][3]={1,2,3};//部分初始化,其余的为零
        int brr[2][3]=arr;//数组的初始化只有一次机会
        return 0;
}

注:定义二维数组可以省略行数,但是不能省略列数。

C语言所有数组都是从零号下标开始的,先遍历行,再遍历列。

提问:下列代码表示什么意思?

/*
    brr
    brr+1
    brr[0]+1
    brr[0][0]+1
    */

int main()
{
        int (*p)[3]=brr;
	printf("%d\n",brr);       //7339080
	printf("%d\n",&brr);      //7339080      首元素的首地址,brr代表首元素的首地址
	printf("%d\n",&brr[0][0]);//7339080
	printf("%d\n",brr+1);     //7339092      下一行的首地址
	printf("%d\n",brr[0]+1);  //7339084      同一行的下一个地址
        return 0;
}       
        

 注:

指向一维数组的指针,即数组指针(指向数组的指针,立起来的一维数组)
 int(*p)[3]---->brr的类型,3代表列数

int *p[3]--->指针数组

在函数中二维数组作为参数的表达方式

void Show(int arr[2][3],int row,int col)
//row行的缩写,col列的缩写     arr[][3]也是可以的,列不可以省略
void Show(int (*arr)[3],int row,int col)

输出二维数组

void Show(int arr[2][3],int row,int col)//row行的缩写,col列的缩写     arr[][3]也是可以的,列不可以省略
{
	for(int i=0;i<row;i++)
	{
		for(int j=0;j<col;j++)
		{
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
}
int main()
{
   int brr[2][3]={1,2,3,4,5,6};
   Show(brr,2,3);
   return 0;
}

第二种

void Show2(int *brr,int row,int col)
{
	for(int i=0;i<row;i++)
	{
		for(int j=0;j<col;j++)
		{
			printf("%d ",brr[i*col+j]);
		}
		printf("\n");
	}
}
int main()
{
	int brr[2][3]={1,2,3,4,5,6};
	Show2((int*)brr,2,3);
        return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值