2015-06-18 5 views
0

Недавно я пытался укрепить свои навыки с указателями, и я побежал в следующий вопрос:Указатель Со ссылкой на массив

У меня есть следующий фрагмент кода, но я бегу в ошибку времени выполнения. Я попытался найти некоторые вещи об итерации через указатель, представляющий массив, но я ничего не мог найти.

Может ли кто-нибудь помочь мне найти проблему?

#include <bits/stdc++.h> 
using namespace std; 
int main() 
{ 
    int * arr; 
    arr[0]=1; 
    arr[1]=2; 
    for (int g=0; g<2; g++) cout << arr[g] << '\n'; 
} 

ответ

3

Вы на самом деле не объявили любое хранилище для массива, и не обр фактически указывает на первый элемент массива (разыменования является неопределенное поведение).

int solve[2]; 
int * arr = solve; 

или

int solve[2]; 
int * arr = &solve[0]; 

Оба способа присвоит адрес правильно выделенного хранения в пределах до arr и разыменования его, определяется:


Вы что-то вроде отсутствует поведение.

+0

Итак, как бы это изменить? – user3904846

+0

int solve [2]; int * arr = & solve [0]; – user3904846

+0

@ user3904846 Почти: 'int * arr = solve;' –

Смежные вопросы