구조체에 관한 간단한 질문.
글쓴이: kevin0960 / 작성시간: 일, 2008/09/28 - 10:38오후
다음은 test 라는 구조체를 만들어서, 그 구조체의 배열의 c 값을 모두 1 로 초기화하는 것 입니다.
#include
struct test
{
int c;
};
test x[50];
int ptr(test *k , int j);
int main()
{
int i = 0;
while(i < 50){
ptr(&x[i],i);
i++;
}
return 0;
}
int ptr(test *k , int j)
{
k[j].c = 1;
return 0;
}
위 처럼 하면 x[1].c , x[3].c , x[5].c 등 홀수 번째 값들이 모두 1 이 되지 않습니다.
그런데
#include
struct test
{
int c;
};
test x[50];
int ptr(test *k , int j);
int main()
{
int i = 0;
while(i < 50){
x[i].c = 1;
i++;
}
return 0;
}
이렇게 하면 모두 정상적으로 1 이 됩니다. 도대체 왜 그런 것이죠? 어제 밤새서 생각해 보았는데도 잘 모르겠네요.
C 언어 초짜가 이렇게 질문 드립니다.
Forums:
두 코드가 의미가 다른데요.
main함수의 while문 내부를 보시면,
이렇게 되어있는데, 이미 x의 i번째 항목을 넘겨주고 있습니다.
그런데 ptr을 봅시다.
이미 i번째 항목을 넘겼는데, 거기서 다시 j번째 항목에 값을 할당하고 있습니다.
당근 차례대로 할당이 안되겠죠?
제가 보기에는 while문 내부를 ptr(x, i)로 수정하거나,
아니면, ptr(&x[i])로 바꾸고, ptr내부를 k->c = 1; 변경하시거나 하는게 좋을 것 같습니다.
댓글 달기