간단한 (?) 프로그래밍 질문 입니다.

hyper9의 이미지

대부분의 분들에게는 간단할 것 같은데, 저는 잘 생각이 안되어서
이렇게 질문을 올립니다..

하고자 하는 것은요 ..

int main (void)
{
int addr[4];
이렇게 main ()에 addr이라는 4개짜리 integer array가 있고요.

이것을 아래와 같은 read_address function으로 addr[4]의 배열을 전달하고요.
read_address(addr);

아래의 read_address()에서 대입된 값을 아래와 같이 print해보려합니다.
printf("addr[0] = %x \n", addr[0]);
printf("addr[1] = %x \n", addr[1]);
printf("addr[2] = %x \n", addr[2]);
printf("addr[3] = %x \n", addr[3]);

return 0;
}

실제로 read_address()에서는 아래와 같이 어떤 값을 대입하려 하고요.
void read_address(addr)
{
addr[0] = 0x100;
addr[1] = 0x101;
addr[2] = 0x102;
addr[3] = 0x104;
}

물론 원래 하려고 했던 일은 이것과는 좀 다른 내용이지만, 지금 제가 잘 몰라서
질문드리고자 하는 부분을 위와 같이 단순화해 봤습니다.
그럼 조언을 좀 부탁드리고 싶습니다.

미리 감사드립니다.

JuEUS-U의 이미지

솔직히 뭐가 질문인건지 모르겠습니다....;;

addr 배열은 stack에 들어있고,
addr을 인자로 넘겨주면 addr 첫째항 주소가 넘어가고,
그걸 받은 함수에서 주소로 접근하면 main의 addr의 값이 변경되는 겁니다.
문제될게 있나요?

drinkme의 이미지

void read_address(int *addr)
{
..
}

이렇게 정의를 하셔야 할 듯 합니다.

hyper9의 이미지

제가 생각이 좀 부족한 상태에서 질문을 올렸던 것 같네요..
다시 해보고 ,,더 질문이 필요하면 올릴게요 ^^
감사합니다 ~