私はC開発には新しく、関数内で配列値を設定して呼び出しメソッドに戻す際に問題があります。関数自体はintを返す必要があり、配列のサイズは動的でなければならないので、配列へのポインタを利用して元の配列を更新しようとしています。私はこれを実行すると、私は次のような結果が取得Cのポインタを使用して参照によって配列を修正しています
int getArray(TestType *testArray)
{
testArray = malloc(2 * sizeof(TestType));
testArray[0].id = 1;
testArray[0].testFloat = 1.5;
testArray[1].id = 2;
testArray[1].testFloat = 2.5;
printf("getArray element 2 id = %d\n", testArray[1].id);
return 1;
}
void main()
{
TestType *testArray;
int i = getArray(*&testArray);
printf("main element 2 id = %d\n", testArray[1].id);
}
:
getArray element 2 id = 2
main element 2 id = 0
私が他の場所で見てきたとc returning an array from a functionは、同様の問題を説明したが、この一方で、char配列を扱っている私のコードは以下の通りです私はユーザー定義の構造体を持っているので、私は同じソリューションを適用することができるとは思わない。
C11ドラフト標準n1570と同じです:6.5.2.2関数呼び出し* 4引数は任意の完全なオブジェクト型の表現かもしれません。ファンクションへのコール の準備では、引数が評価され、各パラメータに対応する引数の の値が割り当てられます。 93)関数はそのパラメータの値を変更することがありますが、これらの変更は 引数の値には影響しません* – EOF
@EOF絶対に正しく、ちょうど私の2セント、私はC開発に新しいです、_only_それらはかなり重い言葉です。 :) –
@SouravGhosh:Cで何が起こっているのかを実際に理解したい場合は、標準を読むことに代わる方法がないことがわかります。標準の多くは、かなり読みやすくなっています。 – EOF