2016-12-05 1 views
1

내가이변수에 대한 참조와 C++ 배열을 초기화 한 후

for(int i = 0; i < NUM; i++){ 
    count[i] = new int; 
    *count[i] = 0; 
} 

같은 일부 소스 코드 무언가에서 본 값과 지점 그냥도록하는 것과는 반대로 무엇인지 궁금 해서요 :

count[i] = 0;

+0

하나의 가능한 이유 : 첫 번째 코드 블록에있는 배열 요소는'count' 배열이 범위를 벗어난 후에도 유지됩니다. 배열이 범위를 벗어나면 두 번째 코드 블록의 배열 요소에 액세스 할 수 없습니다. –

+0

알겠습니다. 고마워요. 따라서 count [x]가 다른 변수를 설정하므로 카운트가 소멸 될 때 그 값이 그대로 유지되기를 원할 수 있습니다. –

+0

나는 너무 간단하게 보일지도 모르지만, 아마도'count'는 단지'int *'의 배열입니까? –

답변

1

그냥 무슨 의미인지 궁금합니다. count[i] = 0;

글쎄, 0에 대한 포인터를 초기화하는 것은 뾰족한 값을 0으로 초기화하는 것과는 다른 의미가 있습니다.

유효한 개체를 가리키는 포인터를 역 참조하는 것이 좋으며 개체의 값을 반환합니다. 값이 0 인 포인터 (NULL 포인터)를 역 참조하는 경우 정의되지 않은 동작이 발생합니다. 대신 궁금 할


, 왜 대신 정수의 배열의 동적 정수를 할당 할 수있는 배열 포인터를 사용할 것입니다. 합리적인 선택이기 때문에 질문하는 것이 옳습니다. 그러나이 스 니펫은 이유를 설명하지 않습니다. 가능한 경우 코드를 작성한 사람에게 질문하여 알 수 있습니다.

관련 문제