추천, 2020

에디터의 선택

정의와 선언의 차이점

정의 및 선언은 프로그래밍에 익숙하지 않은 경우 매우 혼란스러운 용어입니다. 두 가지 개념은 선언 메모리가 할당되지 않은 상태에서 변수에 대한 메모리 할당을 포함하기 때문에 여러면에서 다릅니다. 선언은 한 번 이상 수행 될 수 있으며 반대로 엔티티는 프로그램에서 정확히 한 번 정의 될 수 있습니다.

정의는 대부분의 시나리오에서 자동으로 선언입니다. 이제 상세한 비교 차트를 사용하여 정의와 선언의 차이점을 이해해 봅시다.

비교 차트

비교 근거정의선언
기본변수, 함수 또는 클래스에 저장된 값을 결정합니다.변수, 함수, 클래스 등의 이름과 유형을 지정합니다.
메모리 할당발생 함자리를 잡지 못합니다.
되풀이일단 정의 된 문장은 다시 정의 할 수 없습니다.재 선언은 쉽게 가능합니다.
범위기간 결정됨가시성이 지정되었습니다.

정의의 정의

정의 는 변수, 함수, 클래스 등의 이름과 관련된 코드 또는 데이터를 식별합니다. 선언 된 엔티티의 저장 영역을 할당하기 위해 컴파일러가 반드시 정의해야합니다. 변수가 정의되면 해당 변수에 대한 몇 바이트의 메모리로 구성됩니다. 함수 정의는 함수에 대한 코드를 생성합니다. 정의가 프로그램 요소의 고유 한 스펙이므로 프로그램 요소를 프로그램에서 한 번만 정의 할 수 있습니다. 선언과 정의의 관계는 일대 다 일 수 있습니다.

경우에 따라 프로그램 요소를 정의 할 수는 없지만 선언 할 수는 있습니다. 예를 들어 함수가 호출되지 않거나 선언 된 경우에도 해당 주소가 사용되지 않을 때입니다. 또 다른 예는 클래스 정의가 선언되어야하는 동안 사용되지 않는다는 것입니다.

선언의 정의

선언 은 변수, 함수, 네임 스페이스, 클래스 등의 이름을 프로그램에 지정하는 데 사용됩니다. 선언없이 프로그램에서 이름을 사용할 수 없습니다. 프로그램 요소는 정의와 달리 여러 번 선언 할 수 있습니다. 여러 선언은 동일한 형식을 사용하여 여러 선언을 수행해야만 달성 할 수 있습니다. 선언은 컴파일러의 관점에서 프로그램 요소에 대한 가시성을 제공하는 매체입니다.

선언문은 정의의 목적을위한 것이며, 아래에 주어진 조건이 암시되지 않는 경우에만 가능합니다.

  • 정적 데이터 멤버가 클래스 선언 내에서 선언 된 경우이 경우 선언이 아닙니다. 왜냐하면 클래스의 모든 객체에 대해 하나의 복사본 만 생성하고 정적 데이터 멤버는 제공된 클래스 유형의 객체의 구성 요소이기 때문입니다.
  • 선언이 typedef 문인 경우.
  • 변수는 이니셜 라이저 또는 함수 본문없이 선언되지만 extern 지정자를 포함합니다. 이 정의는 다른 함수에 대한 정의 일 수 있으며 외부 연결이라는 이름을 제공함을 나타냅니다.
  • 클래스 T와 같은 정의를 포함하지 않는 클래스 이름 선언.

일반적으로 선언은 범위 에서 발생합니다. 범위는 선언 된 이름의 가시성과 정의 된 객체 기간을 결정합니다.

정의와 선언의 주요 차이점

  1. 프로그램 요소의 정의는 해당 요소와 연관된 값을 판별합니다. 반면에, program 요소의 선언은 컴파일러의 이름과 유형을 지정합니다.
  2. 프로그램 요소의 정의는 메모리 양을 예약하고 선언은 메모리 할당을 포함하지 않습니다.
  3. 프로그램 요소는 여러 번 선언 할 수 있습니다. 반대로, 정의는 코드 또는 데이터로 구분할 수있는 프로그램 요소의 이름을 가진 고유 한 사양을 포함합니다.
  4. 선언의 범위는 변수, 함수, 객체, 클래스, 열거 등의 가시성을 설명합니다. 반대로 정의에서는 범위가 기간과 관련됩니다.

정의 예

  • 변수 정의 및 선언 :
    int r = 10;
  • 함수 정의 :
     int add (int x, int y) {int a; a = x + y; a를 돌려 보내십시오; } 

선언의 예

  • 변수 선언 :
    extern int r;
  • 함수 선언 :
    int add (int p1, int p2);

결론

선언 프로세스는 프로그램 요소를 컴파일러에서 볼 수 있도록하기 위해 사용되며 메모리를 할당 할 필요가 없습니다. 역 정의는 저장소를 예약하는 선언입니다. 즉 컴파일러가 선언 된 엔터티의 메모리 공간을 예약합니다.

Top