일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- git
- github
- IoTNetwork
- 3D프린터입문
- ci/cd
- linux job
- OnlineIDE
- 3D프린터 입문
- 3D
- docker
- nas
- 3D프린터
- Notification
- 3D모델링
- C언어
- Kotlin
- 3d프린터 초보
- octoprint
- Jenkins
- gitlab
- kubernetes
- Token인증방식
- docker container
- 3D 프린터 용어
- 리눅스 파일동기화
- 네이버클라우드
- NAS HDD교체
- data serialization formats
- 코틀린개발환경
- 데이터 직렬화 포맷
- Today
- Total
0과 1을 공부하다.
[C] C언어 키워드(Keyword) 정리 본문
본 글에서는 C언어에서 사용하는 고유한 의미를 가지고 있는 키워드(Keyword) , 예약어(reserved word)의 내용을 정리하고 해당 키워드의 간략한 사용법을 알아본다. 자세한 내용은 언급하지 않으니 참고용도로만 언급한다.
■ const (변수 상수화)
const는 변수의 값의 변경을 방지하기 위해 상수화 하는 것이다. 해당 키워드를 사용하면 선언과 동시에 초기화 해야 한다.
int num1 = 100; // 일반 변수선언
const int num2 = 100; // 상수화 변수선언
num1++; // num1변수 1증가
num2++; // 컴파일 에러 !
■ sizeof (자료형 크기)
sizeof는 매개변수로 입력한 자료형 또는 변수의 자료형 크기를 byte단위로 반환함.
sizeof(char); // 1(byte) 반환
sizeof(int); // 4(byte) 반환
sizeof(double); // 8(byte) 반환
int a;
sizeof(a); // 4(byte) 반환
■ unsigned (자료형 범위 양수로 확장)
unsigned는 자료형의 범위를 양수로 확장하는 키워드이다.
예를들어 1byte의 char 자료형은 -128 ~ +127 까지 표현 가능하다. 해당 키워드를 사용하면 0 ~ 255까지 표현 가능하다.
char a; // -128 ~ 127까지 표현가능
unsigned char b; // 0 ~ 255까지 표현가능
■ break (반복문 탈출)
break는 반복문(while, for, do-while)에서 반복문을 탈출 할 때 사용한다.
int name = 1;
while(1)
{
if(name == 1)
{
break; // 조건문을 통해 name변수가 1으로 성립함으로 break문을 통해 무한루프를 탈출
}
}
■ continue (반복문 이하 생략)
continue는 반복문(while, for, do-while)에서 continue 이하의 코드를 생략 할 때 이용한다.
// main 함수 생략
int name = 0;
while(1)
{
name++; // name 변수 1증가.
if(name != 5)
continue; // 아래코드 생략 후 반복문 첫 코드로 회기
break; // 반복문 탈출
}
■ typedef (새로운 자료형 선언)
typedef는 새로운 자료형을 선언, 자료형에 키워드를 붙어준다.
typedef int jungsu; // 정수형 키워드 int를 jungsu로 정의
jungsu a = 100; // jungsu형 자료형 a선언
int b = 100; // 위와 동일한 선언임.
■ struct (구조체)
struct는 하나 이상의 변수를 묶어 새로운 자료향을 정의한다.
// 구조체 선언
struct person
{
char name[20];
char phonenumber[20];
int age;
};
int main(void)
{
struct person a; // 구조체형 person 변수 a 선언
return 0;
}
■ union (공용체)
union은 두개 이상의 선언된 자료형에서 제일 크기가 큰 자료형의 변수를 서로 공유한다. 구조체와 선언방식은 비슷하지만 메모리 할당부분에서 다르다.
// 공용체 선언
union person
{
char one;
int two;
};
// 해당 공용체는 가장 큰 자료형 int형 4byte 메모리 할당됨.
union person p1;
p1.one = 128; // char 형 자료형범위 오바
printf("%d\n", p1.one); // 자료형 범위오바로 잘못된 데이터를 출력함.
printf("%d\n", p1.two); // 데이터를 공유하기 때문에 int형 변수 two를 호출하여도 one에 넣었던 데이터가 정상적으로 출력됨.
■ enum (열거형)
enum은 정수형 상수에 이름을 부여하는 것이다. 별도의 값을 지정하지 않으면 첫 번째부터 0으로 순차적으로 할당된다.
enum days { SUN, MON, TUE, WED, THU, FRI, SAT }; // sun부터 0을 시작으로 순차적 할당됨
enum days { SUN = 1, MON = 2, TUE = 3, WED = 4, THU = 5, FRI = 6, SAT = 7 }; // 지정하여 선언 가능
printf("%d", SUN); // 1번줄만 있다는 가정하에 0 출력
■ #define (지시자 / 매크로)
#define은 지시자로 전처리기에서 매크로를 처리하는 키워드이다. 지시자를 통해 상수 매크로를 정의 할 수 있고, 매크로 함수를 정의 할 수 있다.
#define TRUE 1 // 매크로 TRUE를 상수 1로 치환
#define FLASE 0 // 매크로 FLASE를 상수 0으로 치환
#define SQUARE(X) X*X // 매크로 함수 SQUARE에 매개변수 X 전달 시 X*X 반환
■ malloc / free (힙 영역 메모리 할당 / 반환)
malloc / free는 메모리를 힙 영역에 메모리를 할당하고 반환하는데 사용한다. 원하는 시기에 반환 할 수 있어 동적 할당이라고도 한다. 힙 영역은 프로그램 종료시 소멸되는 데이터 영역(전역변수)와 함수를 벗어나면 소멸되는 (지역변수, 매개변수)와 다르게 사용자가 원하는 시점에 반환된다.
int *ptr1 = (int *)malloc(sizeof(int)); // int형 동적할당
int *ptr2 = (int *)malloc(sizeof(int) * 7); // int형 크기가 7인 배열 동적할당
free(ptr1); // ptr1 메모리 반환
free(ptr2); // ptr2 메모리 반환
■ extern (기억장소 지정자)
extern은 외부파일에 있는 함수 및 변수에 사용하여 해당 변수 및 함수가 외부파일에 정의되어 있음을 명시. 별도의 헤더파일로 선언부분을 분할하면 생략 할 수 있다.
extern int a; // 외부파일에 있는 변수 a를 명시
■ static (정적변수)
static은 전역변수의 특징과 같이 메모리 소멸시기를 프로그램 종료시 하는 키워드이다. 전역변수의 특징과 같이 초기화하지 않으면 0으로 초기화된다. static을 선언하는 방법에는 지역변수, 전역변수, 함수에 이용하여 선언이 가능한데, 해당 특징은 아래와 같다.
- 지역 static: 프로그램 시작시 생성, 종료시 소멸, 정의된 함수 내에서만 사용가능 .
- 전역 static: 전역변수가 선언된 소스파일 내에서만 사용가능.
- 함수 static: 함수가 정의된 소스파일 내에서만 사용가능.
일반적인 전역변수도 반환시기가 프로그램 종료시인데 비슷해보인다. 하지만 static을 이용하면 해당 함수 및 변수의 범위가 제한되기 때문에 은닉화(Encapsulation)을 달성하여 보안성을 높일 수 있다. 즉, 지역 static은 함수를 재호출하여도 생존하고 있기 때문에 해당 데이터가 그대로 유지되기 때문에 전역변수의 특성을 지니면서 지역변수의 특징을 지니게 된다.
int add (int num)
{
static int data2; // 지역 static 변수 (해당 지역에서만 사용 가능, 재호출하여도 데이터 생존)
//이하 생략
}
static int data1 = 100; // 전역 static 변수 (해당 파일에서만 사용 가능)
static int acc(int num) // static 함수 (해당 파일에서만 사용 가능)
{
//생략
}
# 본 내용은 지속적으로 수정 및 추가될 예정임.
* CopyRight 2021. Jay Park All rights reserved.
'Study > C, C++' 카테고리의 다른 글
[C++] 구조체와 클래스 (Struct, Class) (0) | 2021.09.29 |
---|---|
[C] 헤더파일과 프로그램 모듈화 (0) | 2021.09.15 |