为什么不编译?我不想将2
放在最后一对括号中。还有其他办法吗?
int ary[][] = {{2, 3}, {5, 7}, {11, 13}};
答案 0 :(得分:1)
另一种方法:
int ary[] = {2, 3, 5, 7, 11, 13};
现在由您来适当地索引数组。你必须知道每个“行”的元素数量是2,所以只需这样做:
int* get_cell(int* arr, size_t N, size_t x, size_t y)
{
return &arr[x + N * y];
}
答案 1 :(得分:1)
有一种方法可以在不指定尺寸的情况下使用复合文字:
int* ary[] = {( int[] ){2, 3}, ( int[] ){5, 7}, ( int[] ){11, 13} };
用法保持不变!:
ary[2][1] = 55 ;
printf("%d %d\n" , ary[2][0] , ary[2][1] ) ;
复合文字与数组ary
具有相同的范围和生命周期,因此这与使用二维数组非常相似。