私は長い間 Java を使用してきましたが、何らかの理由で単純なコードを記述するために C (C++ ではなく ANSI C) を使用する必要があります。外部から関数にポインターを渡し、ポインターにメモリを割り当て、関数が戻る前にもいくつかの値を割り当てる必要があります。私は自分のコードを次のように持っています
#include <stdio.h>
#include <stdlib.h>
void test(int *a)
{
int n=3;
// I have to call another function t determine the size of the array
n = estimatesize(); // n >=3
// I tried fix size n=10 also
a = (int*)malloc(n*sizeof(int));
a[0] = 1;
a[1] = 2;
a[2] = 3;
}
void main(void)
{
int *s=NULL;
test(s);
printf("%d %d %d", s[0], s[1], s[2]);
}
コードがクラッシュする理由がわかりません。最初は推定サイズ()が間違った数を返すと思っていましたが、nを10に修正してもエラーはまだあります。では、メモリ割り当てのためにポインタを関数に渡すことはできませんか? もしそうなら、どうすれば関数内でメモリを動的に作成して渡すことができますか? このように安全な問題かもしれないことは知っていますが、それが可能かどうか、またその方法を知りたいだけです。ありがとう。