2012-12-12 4 views
0

정적 변수를 함수에 매개 변수로 전달할 때 문제가 있습니까? 프로그램은 1을 출력했습니다. 따라서 정적 변수도 평소와 같이 값으로 전달됩니까?정적 변수를 인수로 함수에 전달

#include<stdio.h> 
int main() 
{ 
    static main; 
    int x; 
    x=call(main); 
    printf("%d %d",x,main); 
} 
int call(int address) 
{ 
    address++; 
    return address; 
} 
+4

C는 * everything *에 대해 값으로 호출을 사용함에 유의하십시오. 호출에서 인수를 변경하면 아무 것도 변경되지 않습니다. – fuz

답변

1

은 예, 정적 변수는 다른 모든 변수처럼 전달됩니다.

그러나 함수 이름과 동일한 이름의 변수를 컴파일 할 때 컴파일 오류가 발생할 것으로 예상됩니다.

+1

나는이 표현이 마음에 들지 않는다. 변수는 표현식이 전달되는 것 이상으로 전달되지 않습니다. –

+0

그것은 질문이었습니다. 변수의 값만 스택에 푸시되고 함수가 사본을 얻는지는 여기서 도움이되지 않습니다. –

+0

"정적 변수는 다른 변수와 똑같이 전달됩니다"는 아직 정교함이나 설명이없는 상태로 총칭됩니다. –

0

통계와 함께 전달되는 변수에는 차이가 없습니다.

주 당신은 당신의 코드에서 유형을 포함해야합니다 static int main;

을 그리고 그 예약 된 키워드 수 있기 때문에 나는 main 같은 변수 이름을하지 않을 것입니다.

+1

'main'은 예약 식별자가 아니며 변수를 선언하는 데 사용할 수 있습니다. – ouah