お酒好きのおしりトラブル対策とは

関数内で、参照渡しをして配列の動的なメモリの確保をしようとしているのですが、うまくいきません。

はじめに、main関数内で、
int main(void){
double *testdata1;
testdata1 = (double*)malloc( sizeof(double) * 10 );

if( testdata1 == NULL ){

printf( "ERROR:testdata1" );
exit(0);

}

testdata1[3] = 20.4;
printf( "test = %g\n", testdata1[3] );
}

を実行したところうまくいきました。
そこで、
int main(void){

double *testdata1;
Kakuho( &testdata1 );
printf( "test = %g\n", testdata1[3] );

}

void Kakuho( double **testdata2 ){

*testdata2 = (double*)malloc( sizeof(double) * 10 );

if( *testdata2 == NULL ){

printf( "ERROR:testdata2" );
exit(0);

}

*testdata2[3] = 20.4;

}

としましたが、成功してくれません。
コンパイルは通りますが実行するとエラーが発生して落ちます。
(上記のprintfのERRORではありません。)

動作環境はXPのVCC7です。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> *testdata2[3] = 20.4;


ここを
 (*testdata2)[3] = 20.4;
に直してください。

この回答への補足

回答ありがとうございます。

>(*testdata2)[3] = 20.4;
>に直してください。

直したところ、正しく実行できました。

ポインタと配列をかね合わせる時には()が必要なのは見落としてました。。。

補足日時:2008/02/05 13:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング