C 언어 함수 인삼(전역 변수)에 대한 몇 가지 설명
1871 단어 단편기 설정
2. 하나의 함수(예를 들어main 함수)에서 다른 함수를 호출할 때, 예를 들어 다음과 같다.
void fun(unsigned char x)
{
x = x+1;
}
int main(void)
{
unsigned char data = 0x10;
while(1)
{
fun(data);
uartWrite (UART0, data, sizeof(data), NULL);
}
}
실행 결과: 0x10
main 함수는fun 함수를 호출하지만 연산 후 되돌아오는 값이 없습니다. 즉 데이터의 값이 업데이트되지 않았거나 0x10입니다.따라서 함수를 통해 변수의 값을 바꾸려면 이 함수에 되돌아오는 값이 있어야 한다.위의 코드를 약간 수정합니다.
unsigned char fun(unsigned char x)
{
x = x+1;
retrun x;
}
int main(void)
{
unsigned char data = 10;
while(1)
{
data = fun(data);
uartWrite (UART0, data, sizeof(data), NULL);
}
}
실행 결과: 0x11
3. 전역 변수가 형삼 입력 함수로 연산될 때 다음과 같은 몇 가지 상황으로 나뉜다. (1) 함수는 되돌아오는 값이 없다.
unsigned char data = 10;
void fun(unsigned char x)
{
x = x+1;
}
int main(void)
{
while(1)
{
fun(data);
uartWrite (UART0, data, sizeof(data), NULL);
}
}
연산 결과: 0x10을 통해 알 수 있듯이 전역 변수가 매개 변수 입력 함수로 연산할 때 그 자체의 값은 변하지 않았다.즉 전역 변수가 형삼 입력 함수로 연산할 때 그 작용은 국부 변수에 해당하고 함수가 되돌아온 후에 효력을 잃는 것이다.
(2) 함수에 반환값이 있다
unsigned char data = 10;
unsigned char fun(unsigned char x)
{
x = x+1;
retrun x;
}
int main(void)
{
while(1)
{
data = fun(data);
uartWrite (UART0, data, sizeof(data), NULL);
}
}
연산 결과: 0x11 사실 이 전역 변수 데이터는fun 함수 내부에서 예(1)와 같은 역할을 하지만 계산 결과를 데이터에 부여하기 때문에 출력된 데이터 값은 0x11이다.
(3) 전역 변수는 함수 내부에 직접 사용되며 형참이 되지 않는다
unsigned char data = 10;
void fun()
{
data = data+1;
}
int main(void)
{
while(1)
{
fun();
uartWrite (UART0, data, sizeof(data), NULL);
}
}
연산 결과: 0x11 전역 변수의 작용역은 전체 프로그램입니다. 함수형으로 입력하지 않으면 계산 값이 실시간으로 업데이트됩니다.그래서 이쪽에서 0x11을 출력합니다.
본고는 국부 변수와 전역 변수를 형삼 입력으로 분류하여 토론하였으며 관련 동업자에게 어느 정도 도움이 되었으면 합니다.