• ベストアンサー

関数の引数でポインタのポインタを渡したいのですが・・・

haporunの回答

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.8

参考までに正しい例。 ---------------------------------------------------- int init_check_func(char *buf, char **cbuf, int arrange){ return 0; } int MSGCHK_func(char *buff){ int Ret = 0; char *combuff[6]; for(int n = 0; n < 6; n++){ combuff[n] = (char*)calloc(8, 1); } strcpy(combuff[0], "ERROR"); strcpy(combuff[1], "OFFLINE"); strcpy(combuff[2], "DISABLE"); strcpy(combuff[3], "ACTIVE"); strcpy(combuff[4], "WARNING"); strcpy(combuff[5], "DOWN"); Ret = init_check_func(buff, combuff, 6); for(n = 0; n < 6; n++){ free(combuff[n]); } return Ret; } ---------------------------------------------------- または、 ---------------------------------------------------- typedef char CHAR8[8]; int init_check_func(char *buf, CHAR8 *cbuf, int arrange){ return 0; } int MSGCHK_func(char *buff){ int Ret = 0; char combuff[6][8]; memset(combuff,'\0', sizeof combuff); strcpy(combuff[0], "ERROR"); strcpy(combuff[1], "OFFLINE"); strcpy(combuff[2], "DISABLE"); strcpy(combuff[3], "ACTIVE"); strcpy(combuff[4], "WARNING"); strcpy(combuff[5], "DOWN"); Ret = init_check_func(buff, combuff, 6); return Ret; } ---------------------------------------------------- 長くてすみません。 ちなみに、OKWEBは行頭のスペースを削除してくれちゃうので、見にくいですね。 このようにメモリ配置とかの勉強ばっかして、実用プログラムをぜんぜん作ったことのないhaporunでした。 ちなみに、本職はVBです。

関連するQ&A

  • ポインタのポインタが引数にある関数の使い方。

    ポインタのポインタが引数にある関数の使い方。 現在、このポインタのポインタが引数にある関数の動きがわからず困っています。 int test(int ** head) { int * pTail = (int *)*head; pTail = pTail + 1; } もし、この関数を呼び出して使用した場合どのような動きをするのでしょうか? int * comm_msg; これをグローバルポインタ変数として宣言させて、 test((void **)&comm_msg); このように呼び出したとした場合とさせていただきます。

  • ポインタ引数をさらにポインタ引数に渡す方法

    ポインタ引数をさらに関数のポインタ引数として設定するには、 どうしたらよいのでしょうか? イメージとしては、 int 関数A(*a *b) { *a = 5; *b =3; 関数B(*a *b) } またポインタ引数の関数内で、 ポインタ指定せずに変数を使えるのでしょうか? int 関数A(*a *b) { a = 5; b =3; 関数B(*a *b) }

  • 引数のポインタについて

    関数で、アウトプット引数をポインタにするのはわかるのですが、 インプット引数をポインタにする理由って何かあるのでしょうか?

  • ポインタを引数で使用する場合

    初心者です。 ローカル関数でポインタを引数で使用する場合の定義で int A (int *x,int *y) とする場合の*はポインタの宣言としての*なのでしょうか? これまでの例題ではメイン関数のなかでポインタを宣言しアドレスを代入し・・・という使い方だったのですがローカル関数で引数を使用するさいはメイン関数内ではポインタの宣言はないので関数の定義と同時にint *x とint *yを宣言するという事なのでしょうか? それ以降の*は間接参照演算子ですね。

  • 関数の引数

    こんにちわ。 ご存知の方、ご教授してもらえないでしょうか? VB.net2005を使っているのですが 関数の引数に変数をセットして、別関数で 引数に対してデータをセットすることは可能でしょうか? C言語でいうところのポインタを引数に渡し ポインタアドレスに書き込むような処理はVB.netでは 可能なんでしょうか? 下記のような事は試したのですが、うまく出来ませんでした(。。; public sub test1() dim mojiretu as string test2( mojiretu ) msgbox(mojiretu) end sub public sub test2( str as string) str = "文字列" end sub

  • ポインタのポインタを引数にもった関数から値を得たい

    すいません。 似たような題も多かったのですが、初心者のため、わかりませんでした。 質問させてください。  ポインタのポインタを引数にもった関数を作りたいのですが、まったくわかりません。 (ポインタであれば、何とかできたのですが…) 例を作ってみました。下記で、dd[2][2]にtest2関数から値を得るとします。 ?1と?2、?3に何を入れたらよいでしょうか?  (?1で得られる値は何でもかまいません。) きわめて抽象的で、申し訳ないのですが、どうぞよろしくお願い致します。 void test2(double **d1) { ?1 } void C_testDlg::OnBnClickedButton1() { // TODO: ここにコントロール通知ハンドラ コードを追加します。 double dd[2][2]; ?2 test2(?3); CString cs; cs.format("%g", dd[1][2]) ::AfxmessageBox(cs); }

  • 関数の引数と戻り値

    度々すいません。 関数に引数として配列のポインタを渡して、戻り値として配列のポインタを返したいのですが、やり方がよく分かりません。 お願いします。

  • 関数ポインタについて

    関数ポインタを使用する際に、 指定する先の関数でデフォルト引数が指定されている場合、 関数ポインタを用いて、その引数を省略して呼び出すことはできるのでしょうか? 以下例とします。 void function(int a = 10){}; typedef void (*test)(int a); test a = &function; a(); //このように呼び出したい

  • JNAで関数ポインタの表し方

    JNAで関数ポインタの表し方 JNAを利用してC言語の関数をJavaで利用したいのですが、その関数の引数に関数ポインタが含まれていて、使い方が分かりません。 関数ポインタ型のJavaのマッピングはどうすればいいのでしょうか? つまりJavaの特定のメソッドをその関数内からコールバックさせたいです。

  • 関数へのポインタ渡しでの配列の初期化について

    はじめまして、C言語の基本的な質問をさせてください。 C言語で、外部関数へポインタで引数を渡す場合に、 関数に渡されるのはアドレスですよね? で、渡された関数側でそのポインタの配列の初期化を するときにはアドレスだけの情報だと、要素数がいくつ あるか分からず、領域の破壊をしてしまいそうな気が するのですが?いかがでしょうか? また、関数かなんかで、配列の要素数が分かる関数が あったような気がするのですが、それもアドレスだけ でわかるのでしょうか?