C 使用初始值设定项设置多维数组的所有边界
为什么不编译?我不想把C 使用初始值设定项设置多维数组的所有边界,c,arrays,multidimensional-array,initialization,C,Arrays,Multidimensional Array,Initialization,为什么不编译?我不想把2放在最后一对括号中。还有别的办法吗 int ary[][] = {{2, 3}, {5, 7}, {11, 13}}; 另一种方法是: 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]; } 有一种
2
放在最后一对括号中。还有别的办法吗
int ary[][] = {{2, 3}, {5, 7}, {11, 13}};
另一种方法是:
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];
}
有一种方法可以在不指定尺寸的情况下使用复合文字执行此操作:
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] ) ;
复合文字与数组的作用域和生存期相同,因此这与使用二维数组非常相似。因为该语言要求您指定除第一个维度以外的所有维度,所以没有办法。