2012-10-20 2 views
0

숙제를 위해 "int i = 0;"과 같은 변수를 사용할 수 없습니다. - 포인터 만.int i = 0없이 무언가를 n 번 반복하려면?

문제는 n 번 무언가를해야한다는 것입니다. 10 번을 말하자면 for 루프없이 n 번이라고 말한 방법을 알 수 없습니다. 그것은 정수에 대한 포인터를 조작하고 있으며, 0으로 끝나지는 않지만 크기는 항상 동일합니다 (예 : 10).

루프를 제어하기 위해 정수를 사용하지 않고 다음 작업을 수행하는 방법이 있습니까?

int i; 
for (i = 0; i < 10; i++) { 
    *(p + i) = 0; 
} 
+0

과제에서 루프를 사용해야한다고 말합니까? 왜냐하면 그렇지 않다면, 당신은 간단하게 : memset (p, 0, sizeof (int) * 10)'을 할 수 있기 때문이다. –

답변

6
어쩌면이 같은

:

int *q = p + 10; 
while (p != q) { 
    *p++ = 0; 
} 

UPDATE :

이렇게 당신은 단지 시작 (P)과 끝 (P + 10)을 식별하여 정수를 사용하지 않는 것 그리고 단지 그들을 반복합니다. 이 경우에는 적용되지 않지만 배열의 크기를 알지 못하거나 알 필요가없는 경우가 많습니다.

+0

맞는 말이지 만, 솔루션의 작동 방식을 설명하지 않고 사람들에게 답을 간략하게 입력하는 것은 현명하지 않을 수 있습니다. –

+0

@Insilico 당신 말이 맞아요, 나는 그렇게하는 경향이 있습니다. 관찰에 감사드립니다. :) – imreal

0
 #include <stdio.h> 
     #include <stdlib.h> 
     int main() 
     { 
     int *p = (int*)malloc(sizeof(int)); 
     for(*p = 0; *p < 10; (*p)++) 
      printf("%d\n", (*p)); 

     } 
0

이것은 재귀 함수의 작업처럼 들립니다.

관련 문제