関数にメモリのブロックを割り当て、引数の1つを介してそのブロックへのポインターを返す方法を見つけようとしています。これは C プログラムです。何か困っているようです。コードは次のとおりです。
void foo(char *ptr)
{
if (!(ptr = malloc(size)))
printf("error");
/* code here */
printf("buffer address: %i\n", (int)buffer);
}
int main()
{
char *ptr;
ptr = NULL;
foo(ptr);
printf("buffer address: %i\n", (int)buffer);
}
結果は次のとおりです。
buffer address: 142385160
buffer address: 0
しかし、私は次のようなものを期待していました:
buffer address: 142385160
buffer address: 142385160
私は何を間違っていますか?