2012-07-20 3 views
1

이 부분을 얻지 못합니다. 글로벌 변수를 사용할 수 없다면 어떻게해야합니까? 예 : function2를 호출 function1참조로 호출 전역 변수를 사용하지 않고 다른 함수에서 참조로 호출 한 변수

main() 
{ int z; 
    function1(&z); 
} 

function1(int *x) 
{ 
    function2(&x); 
} 

function2(int *number) 
{ 
    ++(*number); 
} 
+0

전역 변수가 표시되지 않습니다. 그리고 나는 질문을하지 않는다. –

+0

아니, 그 코드는 나던 것을 의미한다. Wth는 그것에 문제가 있습니까? – latenightcode

+0

그것의 대안으로, 전역 변수로 – latenightcode

답변

3

, 그냥 x하지 &x 전달합니다.

function1(int *x) 
{ 
    function2(x); /* not &x */ 
} 

&x

int에 대한 포인터에 function2 포인터를 전달하지만, 단지 int에 대한 포인터를 취할 선언된다.

기타 문제 : z은 초기화되어야하며 함수는 forward 선언이 있어야하며 main으로 선언되어야합니다. mainint을 반환하고 성공하면 0을 반환하도록 선언해야합니다. 그리고 다른 대답에서 언급했듯이, 당신의 다른 함수들도 리턴 타입을 필요로합니다.

void function2(int *number) 
{ 
    ++(*number); 
} 

void function1(int *x) 
{ 
    function2(x); 
} 

int main() 
{ 
    int z = 0; 
    function1(&z); 
    return 0; 
} 
+0

int를 선언 그것은 오류를 제공합니다 : 캐스트없이 포인터를 정수에서 인수로 전달 – latenightcode

+0

잘 컴파일 [참조하십시오 (http://ideone.com)/RqCZk). – jxh

+0

아, 지금 받으십시오! 고마워! – latenightcode

관련 문제