Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用初始值设定项设置多维数组的所有边界_C_Arrays_Multidimensional Array_Initialization - Fatal编程技术网

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] ) ;

复合文字与数组的作用域和生存期相同,因此这与使用二维数组非常相似。

因为该语言要求您指定除第一个维度以外的所有维度,所以没有办法。