"C언어 선언과 정의 차이점"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;선언과 정의 차이점
;선언과 정의 차이점
;Difference between Declaration and Definition
;Difference between Declaration and Definition
* 선언과 정의의 가장 큰 차이점은 메모리가 할당 되는지를 보면
* 선언과 정의의 가장 큰 차이점은 메모리가 할당되는지를 보면 된다.


==선언==
==선언==
* 컴파일러에게 변수의 정보만을 준다.
* 컴파일러에게 변수의 정보만을 준다.
* 실제 메모리를 사용하지는 않는다.<ref>전혀 메모리를 사용하지 않는 것은 아니고, 선언 그 자체의 메모리는 사용함. 선언만으로는 - 선언 그 자체에 대한 메모리를 사용하지만 - 그 선언이 가리키는 실체에 대해 메모리 할당하지는 않는다는 . 비유하자면 건물의 명칭은 있지만, 실제 건물을 짓지는 않은 상황.</ref>
* 실제 메모리를 사용하지는 않는다.
* 그러한 변수가 있다는 정보(메타데이터)만 있고 실제 데이터는 없는 것이다.
* 물론 메타데이터만 있더라도 전혀 메모리를 사용하지 않는 것은 아니고, 선언 그 자체에 대한 메모리는 사용한다.
* 선언만으로는 그 선언이 가리키는 실체에 대해 메모리를 할당하지는 않는다는 것이다.
* 비유하자면 건물의 명칭은 장부에 기록하지만, 실제 건물을 짓지는 않은 상황이라 할 수 있다.


<syntaxhighlight lang='C'>
<syntaxhighlight lang='C'>
25번째 줄: 29번째 줄:


==정의==
==정의==
* 컴파일러에게 실제 변수를 생성하도록
* 컴파일러에게 실제 변수를 생성하도록 한다.
* 실제 메모리를 사용함
* 실제 메모리를 사용한다.
<syntaxhighlight lang='C'>
<syntaxhighlight lang='C'>
int a;
int a;
45번째 줄: 49번째 줄:
==같이 보기==
==같이 보기==
* [[C언어 강좌]]
* [[C언어 강좌]]
==참고==


[[분류: C]]
[[분류: C]]

2022년 11월 23일 (수) 21:06 기준 최신판

1 개요[ | ]

선언과 정의 차이점
Difference between Declaration and Definition
  • 선언과 정의의 가장 큰 차이점은 메모리가 할당되는지를 보면 된다.

2 선언[ | ]

  • 컴파일러에게 변수의 정보만을 준다.
  • 실제 메모리를 사용하지는 않는다.
  • 그러한 변수가 있다는 정보(메타데이터)만 있고 실제 데이터는 없는 것이다.
  • 물론 메타데이터만 있더라도 전혀 메모리를 사용하지 않는 것은 아니고, 선언 그 자체에 대한 메모리는 사용한다.
  • 선언만으로는 그 선언이 가리키는 실체에 대해 메모리를 할당하지는 않는다는 것이다.
  • 비유하자면 건물의 명칭은 장부에 기록하지만, 실제 건물을 짓지는 않은 상황이라 할 수 있다.
extern int a;
int a();
struct a;
typedef unsigned int UINT;
#define SUM(a, b) (a + b)

3 정의[ | ]

  • 컴파일러에게 실제 변수를 생성하도록 한다.
  • 실제 메모리를 사용한다.
int a;
int a()
{
    return 0;
}
struct x {
    int x;
    int y;
};

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}