2016-10-19 2 views
-5

配列の割り当て方法は次のとおりです。試してみました動的に割り当てられた2次元文字配列を関数に渡す

sampleFunction(int max, char list[][max]){ 
    //Do something 
}; 

expected 'char (*)[(sizetype)(max)]' but argument is of type 'char **' 

私も試してみました:

sampleFunction(25, cArray); 

これは私に次のエラーを与えるこの署名で関数に渡す方法を

char** cArray = malloc(10 * sizeof(char *)); 

int i; 
for(i =0; i< 10; i++) { 
    cArray[i] = malloc(25 * sizeof(char)); 
} 

sampleFunction(int max, char* list[][max]){ 
    //Do something 
}; 

sampleFunction(25, &cArray); 

これは私に次のエラーを与える:

expected 'char * (*)[(sizetype)(max)]' but argument is of type 'char ***' 

私も試してみました:

expected 'char * (*)[(sizetype)(max)]' but argument is of type 'char **' 

正しいかどう:

sampleFunction(int max, char* list[][max]){ 
    //Do something 
}; 

sampleFunction(25, cArray); 

これは私に次のエラーを与えますこれを行う方法?

+6

* "これを実行するための正しい方法は何ですか?" * - 'のstd :: vector'と' STDを使用しました: :string'。 – ArchbishopOfBanterbury

+4

CまたはC++を使用していますか?あなたがC++を使用しているなら、 'std :: vector 'が好ましい方法です。 – NathanOliver

+4

「これを行う正しい方法」の最初のステップは、使用している言語を指定することから始めることです。 CはC++と同じ言語ではありません。また、使用しているライブラリ/ヘッダーも含めてください。 – 8protons

答えて

1

配列はポインタではなく、ポインタは配列ではありません。

listは、charの配列へのポインタです。
cArrayではありません。それはchar*へのポインタです。

listchar*の配列へのポインタであり、さらにcArrayからです。

あなたは正しい型、char**、および両方の寸法を渡す必要があります:

void sampleFunction(int max_rows, int max_columns, char** list){ 
    for (int i = 0; i < max_rows; i++) 
     for (int j = 0; j < max_columns; j++) 
      list[i][j] = 0; 
} 

sampleFunction(10, 25, cArray); 
関連する問題