star
은 단일 정수를 가리키는 포인터입니다. 따라서 length
은 1로 설정해야합니다. star[0]
은 괜찮지 만 star[1]
은 범위를 벗어납니다. 그런데 동적 할당을 사용하는 경우 끝에 delete star;
을 잊지 마세요.
sizeof(star)
은 할당 된 요소의 수가 아니라 포인터의 크기를 알려줍니다. 당신이 동적 크기를 알고 싶다면
, 사용자가 스스로를 추적 할 수 있습니다
size_t length = 15; // or any number you want
int *star = new int[length]; // this time you've allocated an array
...
delete[] star; // if you allocate an array, don't forget the []
대안은 필요에 따라 성장하고, 돌볼 수, 완전히 동적 vector<int>
을 사용하는 것입니다 그들은 더 이상 필요하지 않습니다 해제 : 당신은 정확히 배열 (와 마찬가지로 멤버에 액세스 할 수 있습니다
vector<int> star; // empty vector created
...
star.push_back(i); // add an element
...
j=star.size(); // in fact you don't need j anymore
예를 들어 star[k])
이미지가 아닌 코드를 여기에 붙여 넣으십시오. – abdul
'star'는 배열이 아닙니다. – 0x499602D2