感谢大家指出C中没有这样的内置机制。
我尝试使用@Afonso Tsukamoto 的建议,但我意识到我需要一个多维数组的解决方案。所以我最终编写了自己的函数。我会把它放在这里以防其他人正在寻找类似的答案:
void GetSlicedMultiArray4Col(int A[][4], int mrow, int mcol, int B[1][4], int sliced_mrow)
{
int row, col;
sliced_mrow = sliced_mrow - 1; //cause in C, index starts from 0
for(row=0; row < mrow; row++)
{
for (col=0; col < mcol; col++)
{
if (row==sliced_mrow) B[0][col]=A[row][col];
}
}
}
所以 A 是我的输入(原始数组),B 是我的输出(切片数组)。我这样调用函数:
GetSlicedMultiArray4Col(A, A_rows, A_cols, B, target_row);
例如:
int A[][4] = {{1,2,3,4},{1,1,1,1},{3,3,3,3}};
int A_rows = 3;
int A_cols = 4;
int B[1][4]; //my subset
int target_row = 1;
GetSlicedMultiArray4Col(A, A_rows, A_cols, B, target_row);
这将产生一个在 Matlab 中等于 A(target_row,1:4) 的结果(多维数组 B[1][4])。
我是 C 新手,所以如果我错了或者这段代码可以做得更好,请纠正我......再次感谢 :)