2014-07-05 2 views
-1

C++을 배우고 있고 연습 문제 중 하나는 포인터를 사용하여 배열의 모든 요소를 ​​0으로 설정하는 것입니다.이 방법은 포인터를 증가 시켜서 어떻게하는지 잘 모릅니다 내 IDE 로그가 과 * 사이의 비교가 금지되어 있다고했기 때문에 배열의 다음 위치로 이동합니다. 나는 내가 잘못 가고있는 곳을 더 잘 이해할 수 있도록 예제로 작은 스 니펫 만 필요합니다. I 만든 배열 형 INT이며 코드는 시작 &array[0] 및 포인터에 대한 포인터를 생성 1,2,3,4- 5 개 이루어진 요소와 제배열의 모든 요소를 ​​0으로 설정하는 방법

+0

실제로 사용 "(전 = 0; 나는 <5; 내가 ++)에 대한 배열 [내가] = 0"이 [링크]를 체크 아웃, 더 나은 설명은 포인터 – almanegra

+0

를 증가된다 (HTTP : // WWW .tutorialspoint.com/cplusplus/cpp_pointer_to_an_array.htm) 지금까지 가지고있는 –

+0

int arr [5] = {1,2,3,4,5}; int * ptr = arr; (* ptr user3806887

답변

1
int array[5] = {1, 2, 3, 4, 5}; 

for(int *i = &array[0], *end = &array[5]; i != end; i++) 
    *i = 0; 

단일 차원을 갖는다 끝을지나 한 위치로 이동 &array[5]
그런 다음 배열을 통해 포인터를 이동하여 각 요소를 0으로 설정합니다. 매우 유사한 고급 개념은 iterators입니다.

+0

calloc을 사용하여 배열 요소를 0으로 초기화 할 수도 있습니다. Calloc의 맨 페이지를 참조하십시오. –

+0

나는 while 루프를 사용하는 것이 약간 쉬웠다 고 생각했다. 나는 for 루프에서 어떻게 만들 것인지를 알 수 없었지만 어떤 점에서 참조가 필요할 것이라고 확신했지만 아직 새로운 것에 대해서 구문을 제대로 이해하지 못했습니다. 답장을 보내 주셔서 감사합니다. – user3806887

+0

@ user3806887 : while 루프는 잘 작동합니다. 귀하의 코멘트에있는 당신의 원래 코드는 아주 가깝지 만 그것을 다음과 같이 변경해야합니다 :'int arr [5] = {1, 2, 3, 4, 5}; int * ptr = arr; int * end = arr + 5; while (ptr

관련 문제