###前提・実現したいこと
ダブルポインタ・トリプルポインタについて質問があります。
現在、パッケージツールを用いて、C++でコードを書いているのですが、その中で既にベンダーから定義された関数を利用する必要があり、使い方に困っております。
まず①のように宣言し、②の中で仮引数として関数に渡すのですが、後半の2つはアウトプットの仮引数だそうです。
③が関数についての公式な定義です。最後の2つの仮引数が、アウトプットとなります。
*関数の中を見ることはできません。
①char* Item_type = NULL;
int ID = 0;
②iRetCode = Function_Name(ID, &item_type);
Input
int ID : item
Output
item_type : IDを元にアイテムのタイプを返す
③Function_Name(int id, char ** item_type)
item : インプット
item_type : アウトプット
パーケージの開発を行っている方に聞いたところ、Outputとして ポインタとして宣言したitem_typeが関数に渡されることで二次元配列に変わるそうです。
そこで、for文を用いて、tc_strcmp(item_type[i], type)としたところ、エラーが発生し、正しくは、
for文を使わないでtc_strcmp(item_type, type)と出力しないといけないそうです。
その理由として、②の段階で、ポインタの①次元のアドレスを渡しているから、生成される2次元配列は、一つの一次元の配列を要素とする2次元配列だからそうです。そのためitem_type[i]と行った場合、一次元配列の1つの要素を指すので、コンパイルエラーが起きるそうです。
質問なのですが、
①tc_strcmp(item_type, type)のように、二次元配列の要素である一元配列をitem_typeと直接指定することは可能なのでしょうか。
また二次元配列のアドレスはどのように参照するのでしょうか。
②item_type[i][i]のような形を取ると思うのですが、item_type[i]とした場合、一つの要素のアドレスが取得できるので、コンパイルエラーが域内と思いますが、なぜコンパイルエラーが起きるのでしょうか。
③関数の仕様なのでわかりませんが、2次元配列にする理由がわかりません。またそのようなことは可能なのでしょうか。
長文で申し訳ないですが、簡単に説明して頂けると助かります。
宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。