"선언문"의 두 판 사이의 차이
(→개요) |
잔글 |
||
(사용자 2명의 중간 판 3개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''선언문'''은 어떤 [[컴파일러]]가 참조할 [[식별자]](identifier)와 | + | '''선언문'''(宣言文, declarative-statement)은 어떤 [[컴파일러]]가 참조할 [[식별자]](identifier)와 이름을 알리는 것을 말한다.<ref>banaba, 〈[https://banaba.tistory.com/41 선언과 정의(declaration and definition)]〉, 《티스토리》, 2018-10-22</ref> |
==개요== | ==개요== | ||
− | 프로그래밍에서 선언문은 프로그램 내 대상에 이름을 부여함으로써 실제 수행할 동작 등을 그 이름과 | + | 선언문은 [[프로그램]]의 일반적인 특성과 그 프로그램을 다루는 [[데이터]]의 특성을 지정하는 비실행문이다.<ref> 〈[https://terms.naver.com/entry.naver?docId=820300&cid=50376&categoryId=50376 선언문]〉, 《네이버 지식백과》 </ref> 프로그래밍에서 선언문은 프로그램 내 대상에 이름을 부여함으로써 실제 수행할 동작 등을 그 이름과 관련시킨다. 변수는 선언을 통해 이름, [[자료형]](Type) 등을 부여받고, 함수는 [[인터페이스]] 형식 및 자료형 정보 제공 아직 구체적인 몸체가 포함되지 않은 채 일련의 동작을 추상화시킨다. 컴파일러에서 변수 선언은 해당 변수의 사용을 알려서, 메모리 확보를 미리 준비시키는 것이다. 이는 값을 지정하는 변수 초기화가 아니므로 아직 실제 메모리 공간을 할당하는 것은 아니고 알려준다는 뜻이다.<ref> 〈[http://www.ktword.co.kr/test/view/view.php?m_temp1=2702 Declaration, Variable Declaration, Variable Definition, Variable Initialization 선언, 변수 선언, 변수 정의, 변수 초기화]〉, 《정보통신기술용어해설》 </ref> |
==종류== | ==종류== | ||
− | + | ===변수=== | |
+ | 변수 선언문은 변수라는 기억 공간에 이름을 선언하는 선언문이다. 선언하는 형식은 '자료형 변수이름;'으로 선언문을 작성한다. 참고로 자료형은 데이터 타입이며 종류는 정수, 문자, 부동소수점(실수), 문자열이다.<ref name="규칙"></ref> | ||
− | + | ;규칙 | |
*첫 문자는 반드시 영문자 또는 밑줄 문자(_)로 시작한다. | *첫 문자는 반드시 영문자 또는 밑줄 문자(_)로 시작한다. | ||
*[[식별자]]는 대문자와 소문자를 구분한다. | *[[식별자]]는 대문자와 소문자를 구분한다. | ||
14번째 줄: | 15번째 줄: | ||
*식별자의 길이는 제한이 없다.<ref name="규칙"> 컴강사 eduview, 〈[https://edu-coding.tistory.com/3 c언어 변수 선언과 자료형의 종류]〉, 《티스토리》, 2019-09-27 </ref> | *식별자의 길이는 제한이 없다.<ref name="규칙"> 컴강사 eduview, 〈[https://edu-coding.tistory.com/3 c언어 변수 선언과 자료형의 종류]〉, 《티스토리》, 2019-09-27 </ref> | ||
− | + | ;자료형 | |
− | + | 대표 문자형은 [[char]], unsigned char가 있다. | |
+ | char name = 'a'; | ||
− | + | 대표 정수형은 (unsigned) [[short]], (unsigned) [[int]], (unsigned) [[long]]이 있다. | |
− | 대표 | ||
− | |||
− | |||
short a; | short a; | ||
− | int b=10; | + | int b = 10; |
− | long c=20; | + | long c = 20; |
− | 대표 | + | |
+ | 대표 실수형은 [[float]], [[double]]이 있다. | ||
float a=1.244; | float a=1.244; | ||
double b=10.0;<ref name="규칙"></ref> | double b=10.0;<ref name="규칙"></ref> | ||
− | + | ;지역변수 | |
− | + | [[지역변수]](Local variable)는 중괄호 내부, [[함수]]의 [[매개변수]](Parameter)에서 사용되는 변수를 의미한다. 중괄호 밖, 함수의 밖에선 그 효력을 발휘할 수 없다. 지역변수에서 지역은 중괄호 내부, 함수의 내부를 의미하며 선언하는 예시는 다음과 같다.<ref name="지역"> | |
+ | KRFile, 〈[https://pgh268400.tistory.com/82 (C언어 강좌) #11 정적변수, 지역변수, 전역변수, 외부변수, 레지스터 변수]〉, 《티스토리》, 2020-01-28 </ref> | ||
+ | |||
#include <stdio.h> | #include <stdio.h> | ||
void print(){ | void print(){ | ||
− | + | int a = 30, b = 40; | |
− | + | printf("%d %d", a,b); | |
} | } | ||
int main(){ | int main(){ | ||
− | + | int a = 10, b = 20; | |
− | + | printf("%d %d \n", a,b); | |
− | + | print(); | |
return 0; | return 0; | ||
} | } | ||
10 20 | 10 20 | ||
− | 30 40 | + | 30 40 |
− | + | ||
+ | ;전역변수 | ||
+ | [[전역변수]](global variable)는 지역변수와 반대로, 중괄호 외부에 선언되는 변수다. 전역이라는 이름 그대로 어느 지역에서든 참조해서 사용할 수 있으며 선언하는 예시는 다음과 같다. | ||
− | |||
− | |||
#include <stdio.h> | #include <stdio.h> | ||
int global = 100; | int global = 100; | ||
56번째 줄: | 58번째 줄: | ||
}<ref name="지역"></ref> | }<ref name="지역"></ref> | ||
− | + | ;정적변수 | |
− | + | [[정적변수]]는 단어에서도 유추가 가능하듯 동적변수의 반대로 정적으로 할당되는 변수이다. 동적변수는 C언어에서 다루는 대부분의 변수며 선언 방식은 다음과 같다. | |
static int n;<ref name="지역"></ref> | static int n;<ref name="지역"></ref> | ||
− | + | ;외부변수 | |
− | + | [[외부변수]](Extern) 변수는 이름 그대로 외부 파일에 선언된 변수를 참조하여 사용하는 변수이며 선언 방식은 다음과 같다. | |
+ | |||
//1.c | //1.c | ||
81번째 줄: | 84번째 줄: | ||
===함수=== | ===함수=== | ||
− | [[함수]] 선언을 하는 이유는 [[컴파일러]](compiler)에 그 함수를 미리 인식하게 | + | [[함수]] 선언을 하는 이유는 [[컴파일러]](compiler)에 그 함수를 미리 인식하게 하기 위함이며, [[함수 원형]](prototype)에 세미콜론을 붙여서 선언한다. |
+ | |||
int add ( int a , int b) ; | int add ( int a , int b) ; | ||
− | + | 매개변수의 이름를 생략하여 함수 선언하는 것도 가능하다. | |
int add ( int , int) ; //int 타입의 매개 변수 2개를 필요로 하다. | int add ( int , int) ; //int 타입의 매개 변수 2개를 필요로 하다. | ||
− | + | 메인 함수의 위쪽에 선언을 한다. | |
int add ( int a , int b) ; // add 함수 선언 | int add ( int a , int b) ; // add 함수 선언 | ||
94번째 줄: | 98번째 줄: | ||
cjh, 〈[https://ok7cjh.com/%ED%95%A8%EC%88%98-%EC%84%A0%EC%96%B8/ 함수 선언]〉, 《해피라이프》, 2020-04-30 </ref> | cjh, 〈[https://ok7cjh.com/%ED%95%A8%EC%88%98-%EC%84%A0%EC%96%B8/ 함수 선언]〉, 《해피라이프》, 2020-04-30 </ref> | ||
− | + | 함수를 미리 선언하면 함수를 호출한 곳에서 올바른 형식으로 호출하였는지 쉽게 파악할 수 있다. 함수 선언에는 매개 변수의 타입과 매개 변수의 개수를 알 수 있는 힌트가 있기 때문이다. 또한 함수를 선언한 곳에서 함수 반환 값의 형태를 미리 파악하고 있다가 어디에서 그 함수를 호출한 경우에 메모리에 반환 값과 같은 형태의 저장 공간을 확보하며, 반환 형태가 int이면 int 타입 메모리 공간을, double이면 double 타입의 메모리 공간을 호출한 곳에 준비한다. | |
− | + | ||
− | + | ; 예시 | |
− | |||
#include <stdio.h> | #include <stdio.h> | ||
123번째 줄: | 126번째 줄: | ||
===배열=== | ===배열=== | ||
− | 배열도 사용되기 전에 선언되어야 하며 일반적인 형식은 다음과 같다. | + | 배열도 사용되기 전에 선언되어야 하며, 일반적인 형식은 다음과 같다. |
− | 원소 타입 배열 이름 [크기] | + | 원소 타입 배열 이름 [크기]</nowiki>; |
− | *원소 타입 : 배열에 포함된 원소들의 타입 | + | *'''원소 타입''' : 배열에 포함된 원소들의 타입 |
− | *배열 이름 : 배열로써 선언되는 변수의 이름 | + | *'''배열 이름''' : 배열로써 선언되는 변수의 이름 |
− | *크기 : 배열에 속한 원소들의 개수 | + | *'''크기''' : 배열에 속한 원소들의 개수 |
int a[10]; | int a[10]; | ||
위에 있는 식으로 선언한다. 다음에 나오는 선언문도 마찬가지다. | 위에 있는 식으로 선언한다. 다음에 나오는 선언문도 마찬가지다. | ||
− | float score[5]; | + | float score[5]; // 배열 이름이 score이고, 원소의 타입은 float이고, 원소의 개수는 5인 배열을 선언한다. |
− | + | char codes[10]; // 배열 이름이 codes이고, 원소의 타입은 char이고, 원소의 개수가 10인 배열을 선언한다. | |
− | char codes[10]; | + | int amount[100]; // 배열 이름이 amount이고, 원소의 타입은 int이고, 원소의 개수가 100이 배열을 선언한다.<ref name="함수"></ref> |
− | |||
− | int amount[100]; | ||
− | |||
{{각주}} | {{각주}} | ||
==참고자료== | ==참고자료== | ||
+ | * 〈[https://terms.naver.com/entry.naver?docId=820300&cid=50376&categoryId=50376 선언문]〉, 《네이버 지식백과》 | ||
+ | * banaba, 〈[https://banaba.tistory.com/41 선언과 정의(declaration and definition)]〉, 《티스토리》, 2018-10-22 | ||
*〈[http://www.ktword.co.kr/test/view/view.php?m_temp1=2702 Declaration, Variable Declaration, Variable Definition, Variable Initialization 선언, 변수 선언, 변수 정의, 변수 초기화]〉, 《정보통신기술용어해설》 | *〈[http://www.ktword.co.kr/test/view/view.php?m_temp1=2702 Declaration, Variable Declaration, Variable Definition, Variable Initialization 선언, 변수 선언, 변수 정의, 변수 초기화]〉, 《정보통신기술용어해설》 | ||
* 컴강사 eduview, 〈[https://edu-coding.tistory.com/3 c언어 변수 선언과 자료형의 종류]〉, 《티스토리》, 2019-09-27 | * 컴강사 eduview, 〈[https://edu-coding.tistory.com/3 c언어 변수 선언과 자료형의 종류]〉, 《티스토리》, 2019-09-27 | ||
147번째 줄: | 149번째 줄: | ||
==같이 보기== | ==같이 보기== | ||
* [[식별자]] | * [[식별자]] | ||
+ | * [[지역변수]] | ||
+ | * [[전역변수]] | ||
+ | * [[정적변수]] | ||
+ | * [[외부변수]] | ||
− | {{프로그래밍| | + | {{프로그래밍|검토 필요}} |
2021년 9월 13일 (월) 11:16 기준 최신판
선언문(宣言文, declarative-statement)은 어떤 컴파일러가 참조할 식별자(identifier)와 이름을 알리는 것을 말한다.[1]
개요[편집]
선언문은 프로그램의 일반적인 특성과 그 프로그램을 다루는 데이터의 특성을 지정하는 비실행문이다.[2] 프로그래밍에서 선언문은 프로그램 내 대상에 이름을 부여함으로써 실제 수행할 동작 등을 그 이름과 관련시킨다. 변수는 선언을 통해 이름, 자료형(Type) 등을 부여받고, 함수는 인터페이스 형식 및 자료형 정보 제공 아직 구체적인 몸체가 포함되지 않은 채 일련의 동작을 추상화시킨다. 컴파일러에서 변수 선언은 해당 변수의 사용을 알려서, 메모리 확보를 미리 준비시키는 것이다. 이는 값을 지정하는 변수 초기화가 아니므로 아직 실제 메모리 공간을 할당하는 것은 아니고 알려준다는 뜻이다.[3]
종류[편집]
변수[편집]
변수 선언문은 변수라는 기억 공간에 이름을 선언하는 선언문이다. 선언하는 형식은 '자료형 변수이름;'으로 선언문을 작성한다. 참고로 자료형은 데이터 타입이며 종류는 정수, 문자, 부동소수점(실수), 문자열이다.[4]
- 규칙
- 첫 문자는 반드시 영문자 또는 밑줄 문자(_)로 시작한다.
- 식별자는 대문자와 소문자를 구분한다.
- 예약어는 사용할 수 없다.
- 식별자는 중간에 공백이 있어서는 안 된다.
- 식별자의 길이는 제한이 없다.[4]
- 자료형
대표 문자형은 char, unsigned char가 있다.
char name = 'a';
대표 정수형은 (unsigned) short, (unsigned) int, (unsigned) long이 있다.
short a; int b = 10; long c = 20;
float a=1.244; double b=10.0;[4]
- 지역변수
지역변수(Local variable)는 중괄호 내부, 함수의 매개변수(Parameter)에서 사용되는 변수를 의미한다. 중괄호 밖, 함수의 밖에선 그 효력을 발휘할 수 없다. 지역변수에서 지역은 중괄호 내부, 함수의 내부를 의미하며 선언하는 예시는 다음과 같다.[5]
#include <stdio.h> void print(){ int a = 30, b = 40; printf("%d %d", a,b); } int main(){ int a = 10, b = 20; printf("%d %d \n", a,b); print(); return 0; } 10 20 30 40
- 전역변수
전역변수(global variable)는 지역변수와 반대로, 중괄호 외부에 선언되는 변수다. 전역이라는 이름 그대로 어느 지역에서든 참조해서 사용할 수 있으며 선언하는 예시는 다음과 같다.
#include <stdio.h> int global = 100;
int main(){ printf("%d", global); return 0; }[5]
- 정적변수
정적변수는 단어에서도 유추가 가능하듯 동적변수의 반대로 정적으로 할당되는 변수이다. 동적변수는 C언어에서 다루는 대부분의 변수며 선언 방식은 다음과 같다.
static int n;[5]
- 외부변수
외부변수(Extern) 변수는 이름 그대로 외부 파일에 선언된 변수를 참조하여 사용하는 변수이며 선언 방식은 다음과 같다.
//1.c #include <stdio.h> int global = 0; int main(){ return 0; } //2.c #include <stdio.h> extern int global; //파일 1.cpp int main(){ printf("%d", global); return 0; }[5]
함수[편집]
함수 선언을 하는 이유는 컴파일러(compiler)에 그 함수를 미리 인식하게 하기 위함이며, 함수 원형(prototype)에 세미콜론을 붙여서 선언한다.
int add ( int a , int b) ;
매개변수의 이름를 생략하여 함수 선언하는 것도 가능하다.
int add ( int , int) ; //int 타입의 매개 변수 2개를 필요로 하다.
메인 함수의 위쪽에 선언을 한다.
int add ( int a , int b) ; // add 함수 선언
int main (void) // main 함수 { ...... }[6]
함수를 미리 선언하면 함수를 호출한 곳에서 올바른 형식으로 호출하였는지 쉽게 파악할 수 있다. 함수 선언에는 매개 변수의 타입과 매개 변수의 개수를 알 수 있는 힌트가 있기 때문이다. 또한 함수를 선언한 곳에서 함수 반환 값의 형태를 미리 파악하고 있다가 어디에서 그 함수를 호출한 경우에 메모리에 반환 값과 같은 형태의 저장 공간을 확보하며, 반환 형태가 int이면 int 타입 메모리 공간을, double이면 double 타입의 메모리 공간을 호출한 곳에 준비한다.
- 예시
#include <stdio.h> int add(int x, int y); // add 함수를 선언한다. int main(void) // main 함수가 시작한다. { int a = 10, b = 20; int result; result = add(a, b); // add 함수를 호출 한다. printf("result : %d\n", res); return 0; } // main 함수의 끝이다.
int add(int x, int y) // add 함수 정의가 시작된다. { int temp; // 두 정수의 덧셈을 임시로 저장할 변수다. temp = x + y; return temp; } // add 함수의 종료 지점이다.[6]
배열[편집]
배열도 사용되기 전에 선언되어야 하며, 일반적인 형식은 다음과 같다.
원소 타입 배열 이름 [크기]</nowiki>;
- 원소 타입 : 배열에 포함된 원소들의 타입
- 배열 이름 : 배열로써 선언되는 변수의 이름
- 크기 : 배열에 속한 원소들의 개수
int a[10];
위에 있는 식으로 선언한다. 다음에 나오는 선언문도 마찬가지다.
float score[5]; // 배열 이름이 score이고, 원소의 타입은 float이고, 원소의 개수는 5인 배열을 선언한다. char codes[10]; // 배열 이름이 codes이고, 원소의 타입은 char이고, 원소의 개수가 10인 배열을 선언한다. int amount[100]; // 배열 이름이 amount이고, 원소의 타입은 int이고, 원소의 개수가 100이 배열을 선언한다.[6]
각주[편집]
- ↑ banaba, 〈선언과 정의(declaration and definition)〉, 《티스토리》, 2018-10-22
- ↑ 〈선언문〉, 《네이버 지식백과》
- ↑ 〈Declaration, Variable Declaration, Variable Definition, Variable Initialization 선언, 변수 선언, 변수 정의, 변수 초기화〉, 《정보통신기술용어해설》
- ↑ 4.0 4.1 4.2 컴강사 eduview, 〈c언어 변수 선언과 자료형의 종류〉, 《티스토리》, 2019-09-27
- ↑ 5.0 5.1 5.2 5.3 KRFile, 〈(C언어 강좌) #11 정적변수, 지역변수, 전역변수, 외부변수, 레지스터 변수〉, 《티스토리》, 2020-01-28
- ↑ 6.0 6.1 6.2 cjh, 〈함수 선언〉, 《해피라이프》, 2020-04-30
참고자료[편집]
- 〈선언문〉, 《네이버 지식백과》
- banaba, 〈선언과 정의(declaration and definition)〉, 《티스토리》, 2018-10-22
- 〈Declaration, Variable Declaration, Variable Definition, Variable Initialization 선언, 변수 선언, 변수 정의, 변수 초기화〉, 《정보통신기술용어해설》
- 컴강사 eduview, 〈c언어 변수 선언과 자료형의 종류〉, 《티스토리》, 2019-09-27
- KRFile, 〈(C언어 강좌) #11 정적변수, 지역변수, 전역변수, 외부변수, 레지스터 변수〉, 《티스토리》, 2020-01-28
- cjh, 〈함수 선언〉, 《해피라이프》, 2020-04-30
같이 보기[편집]