8

このサンプルコードを見つけて、何を表すかをグーグルで検索しようとしまし(int (*)[])var1たが、有用な結果は得られませんでした.

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int *var1 = malloc(100);
    return i(10,10,(int (*)[])var1);
} 

通常、私は C99 で VLA を使用しているため、次の作業に慣れています。

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int var1[10][10];
    return i(10,10,var1);
} 

ありがとう!

4

3 に答える 3

11

「 var1をintの配列へのポインタにキャストする」という意味です。

于 2010-06-04T09:50:58.747 に答える
1

int の配列を指すポインターへの型キャストです。

于 2010-06-04T09:52:00.550 に答える
0

(int (*)[])s の配列へのポインタintです。int[n][m] 関数の引数と同等です。

これは C の一般的なイディオムです。最初に malloc を実行してメモリを予約し、次にそれを目的の型にキャストします。

于 2010-06-04T09:51:23.300 に答える