> 백엔드 개발 > C#.Net 튜토리얼 > 같은 이름의 변수를 다른 함수에서 사용할 수 있나요?

같은 이름의 변수를 다른 함수에서 사용할 수 있나요?

青灯夜游
풀어 주다: 2022-12-30 11:13:00
원래의
24100명이 탐색했습니다.

사용 가능합니다. C 언어에서 함수에 설명된 변수는 지역 변수로, 함수 내에서만 작동하고 다른 함수에는 영향을 주지 않습니다. 서로 다른 함수에서 동일한 변수 이름을 사용한다고 해서 동일한 변수라는 의미는 아닙니다.

같은 이름의 변수를 다른 함수에서 사용할 수 있나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, c99 버전, Dell G3 컴퓨터.

다른 함수에서 동일한 이름을 가진 변수를 사용할 수 있습니다.

추천 튜토리얼: "c 언어 튜토리얼 영상"

함수 내부에 정의된 변수(로컬 변수)

함수 내부에 정의된 변수, 범위도 함수 내부, 함수 외부로 제한됩니다. 사용할 수 없습니다. 이러한 변수를 로컬 변수(Local Variable)라고 합니다. 함수의 형식 매개변수도 지역 변수이며 함수 내에서만 사용할 수 있습니다.

int f1(int a){
    int b,c;  //a,b,c仅在函数f1()内有效
    return a+b+c;
}
int main(){
    int m,n;  //m,n仅在函数main()内有效
    return 0;
}
로그인 후 복사

참고 사항:

1) 메인 함수에 정의된 변수는 지역 변수이기도 하며 동시에 메인 함수에서만 사용할 수 있으며, 다른 함수에 정의된 변수는 메인 함수에서 사용할 수 없습니다. 주요 기능도 기능이며 다른 기능과 동등한 지위를 갖습니다.

2) 형식적인 매개변수 변수와 함수 본문에 정의된 변수는 모두 지역 변수입니다. 실제 매개변수에서 형식 매개변수로 값을 전달하는 과정은 지역변수에 값을 할당하는 과정이기도 하다.

3) 서로 다른 함수에서 동일한 변수 이름을 사용할 수 있습니다. 서로 간섭하거나 혼동을 일으키지 않고 서로 다른 데이터를 나타내고 서로 다른 메모리를 할당할 수 있습니다.

4) 변수는 명령문 블록에서도 정의할 수 있으며, 그 범위는 현재 명령문 블록으로 제한됩니다.

변수 이름 지정 정보

실행 가능한 C 언어 코드의 모든 부분에는 가장 간단한 C 언어 코드를 포함하여 여러 범위가 포함되어 있습니다.

int main(){
    return 0;
}
로그인 후 복사

이것은 가장 간단하고 실행 가능한 C 언어 코드입니다. 여기에는 두 개의 범위가 포함되어 있습니다. 하나는 main() 함수 내부의 로컬 범위이고 다른 하나는 main() 함수 외부의 전역 범위입니다.

C 언어에서는 동일한 이름을 가진 두 변수가 동일한 범위에 나타날 수 없다고 규정합니다. 그렇지 않으면 이름 충돌이 발생합니다. 그러나 동일한 이름을 가진 변수는 다른 범위에 나타날 수 있으며 해당 범위도 다릅니다. 그들 사이에는 갈등이 없습니다. 이 문장에는 두 가지 의미가 있습니다.

  • 같은 이름을 가진 변수는 다른 함수 내에 나타날 수 있으며, 다른 함수는 다른 로컬 범위를 갖습니다.

  • 같은 이름을 가진 변수는 함수 내부와 외부에 나타날 수 있습니다. 함수는 로컬 범위이고, 함수 외부는 전역 범위입니다.

1) 서로 다른 함수 내에서 동일한 이름을 가진 변수는 서로 상관관계나 영향을 미치지 않는 완전히 독립된 두 변수입니다.

#include <stdio.h>

void func_a(){
    int n = 100;
    printf("func_a: n = %d\n", n);
    n = 86;
    printf("func_a: n = %d\n", n);
}

void func_b(){
    int n = 29;
    printf("func_b: n = %d\n", n);
    func_a(); //调用func_a()
    printf("func_b: n = %d\n", n);
}

int main(){
    func_b();
    return 0;
}
로그인 후 복사

작업 결과:

func_b: n = 29
func_a: n = 100
func_a: n = 86
func_b: n = 29
로그인 후 복사

Func_a()와 func_b()는 모두 내부적으로 변수 n을 정의합니다. func_b()에서 n의 초기 값은 29입니다. func_a()를 호출한 후에도 n의 값은 여전히 ​​29입니다. 이는 func_b() 내부의 n이 func_a() 내부의 n에 영향을 미치지 않음을 보여줍니다. 이 두 n은 전혀 다른 변수입니다. 그들은 단지 이름이 같습니다. 베이징과 윈난에 리홍이라는 사람이 있는 것과 같습니다.

2) 함수 내부의 지역 변수와 함수 외부의 전역 변수가 동일한 이름을 갖는 경우 전역 변수는 현재 함수의 로컬 범위에서 "보호"되어 더 이상 효과가 없습니다. 즉, 함수 내부에서는 전역 변수가 아닌 지역 변수를 사용합니다.

변수 사용은 근접성의 원칙을 따릅니다. 현재 로컬 범위에 동일한 이름의 변수가 있으면 더 큰 전역 범위에서는 검색되지 않습니다. 또한 작은 범위의 변수를 사용하면 작은 범위에서 큰 범위까지만 변수를 찾을 수 있고 그 반대의 경우는 찾을 수 없습니다.

구체적인 예를 들어 설명하겠습니다.

#include <stdio.h>

int n = 10;  //全局变量

void func1(){
    int n = 20;  //局部变量
    printf("func1 n: %d\n", n);
}

void func2(int n){
    printf("func2 n: %d\n", n);
}

void func3(){
    printf("func3 n: %d\n", n);
}

int main(){
    int n = 30;  //局部变量
    func1();
    func2(n);
    func3();
    printf("main n: %d\n", n);
   
    return 0;
}
로그인 후 복사

실행 결과:

func1 n: 20
func2 n: 30
func3 n: 10
main n: 30
로그인 후 복사

같은 이름을 가진 여러 변수 n이 코드에 정의되어 있지만 해당 범위가 다르기 때문에 이름 충돌이 없습니다.

다음은 출력 결과를 분석한 것입니다.

func1()의 경우 출력 결과는 20이며, 당연히 func1()의 내부 n이 외부 n 대신 사용됩니다.

func2()가 호출되면 main()의 실제 매개변수 n이 func2()의 형식 매개변수 n으로 전달됩니다. 이때 형식 매개변수 n의 값은 30이 됩니다. 형식 매개변수 n도 지역변수이므로 사용된다.

func3()은 전역 변수를 사용하여 10을 출력합니다. func3()에는 지역 변수 n이 없으므로 컴파일러는 함수 외부, 즉 전역 범위에서만 변수 n을 찾을 수 있습니다.

main()의 printf() 문은 30을 출력합니다. 이는 외부 n 대신 main()의 n이 사용됨을 나타냅니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 교육을 방문하세요! !

위 내용은 같은 이름의 변수를 다른 함수에서 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿