c언어 함수 인자 포인터 질문합니다

stck622의 이미지

#include <stdio.h>
 
void ad(int *a){
	int b = 10;
	a = NULL;
	a = b;
	printf("%p - > ", a);
}
 
int main(void){
	int *a;
	a = NULL;
	ad(&a);
	printf("%p", a);
}

이렇게 하면 두 주소가 같게 나와야 할거같은데 왜 안나올까요?
동적할당을 해야하나요?

라스코니의 이미지

ad(a) 로 다시 해 보세요. 그리고 debug 를 해 보세요.
line-by-line 으로 따라가면서 a 주소를 확인하다 보면 해결되실 겁니다.

shint의 이미지


http://codepad.org/LsMUhIYz

#include <stdio.h>
 
void ad(int *a)
{
    int b = 10;
    a = NULL;
    a = &b;
    printf("ad(int *a)\n");
    printf("int a = &b  %%x  *a %x - > \n", *a);
    printf("int a = &b  %%d  *a %d - > \n", *a);
    printf("int a = &b  %%x   a %x - > \n", a);
    printf("int a = &b  %%p   a %p - > \n", a);
}
 
int main(void)
{
    int* a;
    a = NULL;
    printf("main()\n");
    printf("int* a %%x: %x\n", a);
    printf("int* a %%p: %p\n", a);
    ad(a);
    printf("main()\n");
    printf("int* a %%x: %x\n", a);
    printf("int* a %%p: %p\n", a);
    return 0;
}
 
//
main()
int* a %x: 0
int* a %p: (nil)
ad(int *a)
int a = &b  %x  *a a - > 
int a = &b  %d  *a 10 - > 
int a = &b  %x   a ffd0fbec - > 
int a = &b  %p   a 0xffd0fbec - > 
main()
int* a %x: 0
int* a %p: (nil)

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com