int a[][30]={{2, 16},{4, 8},{5, 16, 21},{2,6,3,5,6}};
由于第二个维度的大小是变化的。如果我想访问诸如 i
(第一维)的特定值之类的东西,访问所有 j
值(第二维),我该如何编写该语句?
我的想法是:
for(int j=0;j<30;j++)
a[i][j]=some operation;
但它不必要地循环到最大值 30。什么是有效的方法?
谢谢。
最佳答案
编译器不会保留任何有关花括号初始化器中有多少个值的信息。相反,它用零填充“缺失”值。
所以这两个是等价的:
int a[][4] = {{2, 16},{4, 8, 5}};
int a[][4] = {{2, 16, 0, 0}, {4, 8, 5, 0}};
如果您知道“实际”数据元素都不为零,则可以在找到零元素时停止循环。否则,您需要以不同方式设置数据。
关于c++ - 从二维初始化数组访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5413371/