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