2016-09-27 2 views
0
short int PC = 0; 

int main() { 
    foo(&PC) ; 
} 

void foo(short int PC) { 
    PC++; 
} 

어떻게하면 PC 전역 변수를 성공적으로 업데이트합니까?매개 변수 별 참조를 통해 C의 전역 변수 업데이트

참고 : PC는 매개 변수로 전달되어야하며 전역 변수는 매개 변수를 통해 수정되어야합니다.

저는 C 언어를 처음 사용하고 *&의 차이점을 이해하려고합니다. 어떤 도움이라도 대단히 감사 할 것입니다.

+2

컴파일러에서이 코드에 대한 진단 메시지를 제공하지 않은 경우 사용중인 스위치를 조정해야합니다. (적어도'& PC'가'short int' 타입이 아니기 때문에 실행시에 정의되지 않은 행동을합니다.) –

+0

글로벌 변수를 매개 변수로 전달할 때 포인트가 보이지 않습니다. – babon

답변

4

당신은 단지 포인터로 인수를 취할 필요가 : C에서 당신이 사용되기 전에 일을 선언해야하기 때문에

short int PC = 0; 

void foo(short int *pc) { 
    (*pc)++; 
} 

int main() { 
    foo(&PC) ; 
} 

내가 main()foo()을 움직였다. 원하는 경우 앞으로 void foo();라고 말하면서 선언 할 수 있으며 아래 정의는 그대로 두십시오.

+0

아하! 당신은 또한'(* PC) ++;로 제 두 번째 질문을 해결했습니다. 주위의 parens없이 나는 성명서가 아무것도하지 않았다는 경고를 받고 있었다. – Nic

+2

'foo()'의 인수를 변경하면 도움이 될 것입니다. 같은 이름 ('PC')을 가진 두 가지 일을하는 것이 그들이 그렇지 않을 때 똑같은 것을 암시합니다. – Peter

+0

@ 피터 : 좋은 지적, 편집 됨. –