2014-06-16 4 views
-3

다음 중 적절한 코드는 무엇입니까? 그 이유는 무엇입니까?함수 인수로 주소 전달

코드 1 :

void fun(int *p) 
{ 
    *p=200; 
} 

main(){ 
int *i_ptr; 
fun(i_ptr); 
printf("%d", *i_ptr); 
} 

CODE2 :

void fun(int *p) 
{ 
    *p=200; 
} 

main(){ 
int i; 
fun(&i); 
printf("%d", i); 
} 

가 포인터의 주소를 전달하는 데 괜찮아요?

+1

어떤 포인터의 주소를 무엇에 전달할 수 있습니까? 두 예제 모두 포인터의 주소를 전달하지 않습니다. –

+0

컴파일하고 실행하면 어떻게됩니까? – Lundin

답변

1

당신은 질문 :

이러한 코드의 적절한 이유는 무엇입니까?

i_ptr이 유효한 메모리를 가리 키도록 초기화되지 않았으므로 첫 번째 것은 정의되지 않은 동작으로 이어집니다.

당신은 그것을 변경할 수 있습니다 :

int main(){ 
    int i; 
    int *i_ptr = &i; 
    fun(i_ptr); 
    printf("%d", *i_ptr); 
} 

과 확인 될 것입니다.

나는 또한 main의 반환 유형으로 int을 추가했습니다.

는 또한 질문 :

가 포인터의 주소를 전달하는 데 괜찮아요?

내가 게시 한 코드와 어떤 관련이 있는지 분명하다.

+1

이 질문에 어떻게 대답합니까? –

관련 문제