1

如何将值分配给堆栈内存上的二维数组。我尝试了以下方法,这似乎不起作用。当然可以一次分配每个值,但我有兴趣一次性分配值。有任何想法吗?

double phi[2][5];
phi[0] = {1, 0, 2, 1, 0};
phi[1] = {1, 0, 2, 1, 0};
4

2 回答 2

2

您可以初始化数组:

double phi[2][5] = { {1, 0, 2, 1, 0 },
                     {1, 0, 2, 1, 0 } };

注意省略的元素将默认为零,因此以下将产生相同的结果:

double phi[2][5] = { {1, 0, 2, 1 },
                     {1, 0, 2, 1 } };

如果编译器支持 C99,那么复合文字可能是一个选项,但类型phi需要更改为指向double[5]. 例如:

double (*phi)[5];

phi = (double[][5]) { { 11, 12, 13, 14, 15 },
                      { 21, 22, 23, 24, 25 } };

phi = (double[][5]) { { 111, 122, 133, 144, 155 },
                      { 211, 222, 233, 244, 255 } };

但是必须分配所有维度,而不是单个维度(参见演示http://ideone.com/NxdUO)。

于 2012-08-14T10:55:17.427 回答
1
double phi[2][5] = {{1, 0, 2, 1, 0},{1, 0, 2, 1, 0}};
于 2012-08-14T10:55:35.200 回答