私は質問をしました:Cを使用して参照によって配列を渡します。私の問題はCでのポインター星の使用であることに気づきました。そして最終的に、この方法は私のプログラムでうまく機能することがわかりました。
#include <stdio.h>
void FillArray(int** myArray)
{
*myArray = (int*) malloc(sizeof(int) * 2);
(*myArray)[0] = 1;
(*myArray)[1] = 2;
}
int main()
{
int* myArray = NULL;
FillArray(& myArray);
printf("%d", myArray[0]);
return 0;
}
その時点まではすべて問題ありませんでした。次に、コードを読みやすくするために、FillArray()関数を次のように変更しました。
#include <stdio.h>
void FillArray(int** myArray)
{
int* temp = (*myArray);
temp = (int*) malloc(sizeof(int) * 2);
temp[0] = 1;
temp[1] = 2;
}
int main()
{
int* myArray = NULL;
FillArray(& myArray);
printf("%d", myArray[0]);
return 0;
}
ここで、printf行で次の実行時エラーが発生します。
Trial.exeの0x773115deで未処理の例外:0xC0000005:アクセス違反の読み取り場所0x00000000。
私はCの専門家ではありませんが、この変更を行うことは正当であるように思われました。しかし、どうやらそれは動作しません。構文は少し混乱していませんか?ここで何かが恋しいですか?
有益な回答をありがとう、
言う。