В приведенном ниже коде, почему я не смог получить доступ к test_var из main? Мои предположения состоят в том, что новый выделяет память в кучу, поэтому срок службы до конца основного или до тех пор, пока вы явно не удалите ее. Но когда я пытаюсь получить доступ к test_var, я получаю исключение.Почему переменная struct выходит за пределы области действия
typedef struct test{
int a;
string str;
}test;
void fun1(test* test_var)
{
test_var = new test[2];
test_var[0].a=1;
test_var[0].str='a';
test_var[1].a = 2;
test_var[1].str = 'b';
return;
}
int main()
{
test *test_var = NULL;
fun1(test_var);
cout<<test_var[0].str;
delete test_var;
return 1;
}
Это будет работать, но с помощью указателя на указатель вместо ссылки на указатель (как говорит мой ответ) является более традиционным способом. –
@ Violet Giraffe In C, может быть. Но вопрос связан с C++. – juanchopanza
Я считаю, что указатель на указатель иногда сбивает с толку. –