#include
int* bb(int* qwe); // 배열을 저장할 함수
double* aa(int* b); // 메인에서 주소를 받아서 그 주소에 저장된 값을 출력할 함수
int main(void)
{
int* bbb=0;
int* aaa;
aaa=bb(bbb); // 함수 bb를 불러서 값을 입력받고 그값을 반환해서 주소 aaa에 저장한다
printf("%d %d",*aaa,*(aaa+1)); // 주소 aaa를 출력한다
aa(aaa); // 주소 aaa를 함수 aa로 보낸다
}
double* aa(int* b)
{
printf("%d %d", *b, *(b+1)); // 받은 주소 aaa를 출력해본다
return 0;
}
int* bb(int*qwe)
{
int bb[2] = {1,2}; //bb라는 배열을 선언해서 1,2를 입력한다
qwe=bb; // 배열 bb를 주소인 qwe에 저장한다
return qwe; // 주소 qwe를 반환한다 , 메인 함수에서는 aaa에서 저장이된다
}
위에서 보시면 제가 bb함수 에서 배열로 1,2,숫자를 입력 받아서 메인 함수로 리턴을 시켜서 주소 aaa에 저장을 시켰거든요
그런다음 주소 aaa를 printf("%d %d",*aaa,*(aaa+1));로 출력시키니깐 1,2가 제대로 출력이 되요
그다음에 다시 주소 aaa를 함수 aa로 보내서 printf("%d %d", *b, *(b+1));로 출력시켰더니 쓰레기 값이 나와요..
제 생각에는 printf("%d %d", *b, *(b+1));를 해도 1,2가 출력 될것이라 생각했는대 그이유를 도대체 모르겠어요..