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を初めて使用するので、間違っている場合、またはこのコードを改善できる場合は修正してください...ありがとうございます:)