|
配列の作成を行なう関数を作ろうと思ったのですが、
ポインタを受け取った関数の側でmallocによる割り当てを行なう処理を
書いたところ、呼び出し元の方に反映されませんでした。
戻るときに破棄されてる様子です。
細部を略すと以下のような感じのコードなのですが、printfの段階ではxはNULLになってます。
結局サイズの決定用にもう一つ関数を作ってmallocはmainで行なうことにしたのですが、
どうしてこうなのか理由がわかりません。ご教授願えないでしょうか。
#include<stdio.h>
#include<malloc.h>
int function(int *xx ) ;
int main( void )
{
int *x = NULL ;
function( x ) ;
printf( "x[0] = %d\n", x[0] );
printf( "x[1] = %d\n", x[1] );
free ( x ) ;
}
int function( int *xx ) {
/* 実際はここにサイズを決定する処理が入ります */
xx = malloc( 2 * sizeof(double) ) ;
xx[0] = 1 ;
xx[1] = 2 ;
return 0 ;
}
|