C++二维数组的初始化赋值及示例

C++二维数组可以看作一个表格,横向为表格的行,纵向为表格的列,数组定义时行号在前,列号在后。二维数组的定义格式为: 数据类型  数组名[常量行表达式][常量列表达式]

二维数组的元素是按先行后列的顺序存放的,例如,定义一个int a[3][2]的数组,其形式为:

a[0][0]a[0][1]
a[1][0]a[1][1]
a[2][0]a[2][1]

可以看到数组的索引是从0开始的,而不是1。其存储结构示意图如下:

0a[0][0]
1a[0][1]
2a[1][0]
3a[1][1]
4a[2][0]
5a[2][1]

二维数组的初始化方法:

1.在二维数组定义的同时,将所有数据写在一个{}中,并以逗号隔开,按顺序给元素赋值(不一定要列出所有元素的要被赋予的值,可以只列出一部分(n个数据),C++默认其为数组前n个元素将被赋予的值,而后面的元素会被C++默认初始化为0)。

全部赋值:

int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

 

部分赋值:

int a[3][4] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

2.分行给二维数组赋值,即也是将所有数据写在一个{}中,在其内部,在把属于同一行的数据用{}括起来,数据之间用逗号隔开 。对于每一行的元素也不必全部赋值,可以只给某一行的前几个元素赋值,如果对二维数组中间或前面行的所有元素都不初始化,但每一行对应的{}必须列出,即使里面没有任何数据;如果对二维数组的最后行的所有元素都不初始化,则其对应的{}可以列出,也可以不列出,但最外层{}内的{}数量不能超过数组的行数。

全部赋值:

int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

 

部分赋值(1):

int a[3][4] = { {1},{5,6,7},{9,10} };
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

 

部分赋值(2):

int a[3][4] = { {1,2,3,4},{}, {5,6,7,8} };
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

3.二维数组初始化后,利用下标和两个for循环赋值:

int a[3][4];
int k=1;//定义一个常数,为数组赋值,当然也可以通过键盘赋值
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		a[i][j] = k;
		k++;
	}
}
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

3.利用二维数组的指针性质赋值。对于C++二维数组如int a[3][4] ,a[0]就是整个数组第一个元素(也是第一行第一个元素)的指针,a[1]是第二行第一个元素的指针,以此类推。这样就可以根据指针性质对二维数组进行赋值(注意:用指针性质对二维数组赋值时,不建议初始化赋值,一般是对于已经初始化后的数组进行数组元素值得改变赋值)。

实例1:

int a[3][4] = { 0,0,0,0,0,0,0,0,0,0,0,0 };//先随便初始化,后面好利用指针对元素改变赋值
int k=1;//定义一个常数,为数组赋值,当然也可以通过键盘赋值
for (int i = 0; i < 12; i++) {
	*(a[0] + i) = k;
	k++;
}
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

实例2:

int a[3][4] = { 0,0,0,0,0,0,0,0,0,0,0,0 };//先随便初始化,后面好利用指针对元素改变赋值
int k=1;//定义一个常数,为数组赋值,当然也可以通过键盘赋值
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		*(a[i] + j) = k;
		k++;
	}
}
for (int i = 0; i < 3; i++) {
	for (int j = 0; j < 4; j++) {
		cout << a[i][j] << ' ';
	}
}

 

 

感谢阅读!

  • 18
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金泽遗梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值