728x90

포인터를 사용해서 변수의 메모리 주소를 저장해왔다. 

 

그렇다면 포인터에 원하는 만큼 메모리 공간을 할당해 주는 방법은 없을까?

 

malloc와 free를 사용하면 메모리에 원하는 만큼 공간을 할당 받을 수 있다.

 

malloc? free? 이게 무슨 말일까?

 

malloc는 "memory allocation"으로 메모리 할당이라는 함수이다.

 

free는 할당해주었던 것을 끝내는 함수이다.

 

직접 코딩해보자.

- #include <stdlib.h>는 malloc, free 함수가 선언된 헤더 파일이다.

- numPtr2 포인터는 malloc(sizeof(int))로 동적 메모리 할당을 해주는 부분이다. sizeof 연산자를 사용하면 int의 크기 만큼 할당 해줄 수 있다.

- %p numPtr1, numPtr2로 할당된 메모리 주소를 출력한다.

- free(numPtr2)는 free 함수를 사용해 해당 포인터 numPtr2 동적 메모리 해제를 하는 부분이다.

* 동적 메모리 할당을 했다면 반드시 free로 해제 해줘야한다.

 

결과는

 

그렇다면 동적으로 할당한 메모리에 값을 저장하려면 어떻게 해야할까?

 

아주 쉽다.

    int *numPtr2;    // int형 포인터 선언

    numPtr2 = malloc(sizeof(int));    // int의 크기 4바이트만큼 동적 메모리 할당

    *numPtr2 = 10;   // 포인터를 역참조한 뒤 값 할당

    printf("%d\n", *numPtr2);    // 10: 포인터를 역참조하여 메모리에 저장된 값 출력
    
    free(numPtr2); 

- 먼저 malloc 함수로 동적 메모리 할당을 해준 뒤

- 포인터에 역참조로 값을 할당 해주면 된다.

728x90
728x90

포인터에 포인터를 선언할 수 있을까 하는 의문점으로 

 

이중 포인터에 대해 알아보자

 

포인터에 변수의 메모리 주소를 저장한다면, 포인터에 주소도 포인터에 저장할 수 있을까?

 

이중포인터가 바로 위에 질문에 답이다.

 

포인터도 포인터로 감쌀 수 있다.

- **을 사용해서 이중 포인터를 사용하면

- 역참조를 2번 진행해서 num1 변수 메모리 주소에서 값을 가져온다.

728x90
728x90

포인터를 이용해서 역참조 연산자를 사용해보자

 

우리는 전에 포인터를 사용하는 방법을 배웠다.

 

다시 이야기하면 변수의 메모리주소를 불러올 수 있다는 것이다.

 

그렇다면 포인터를 이용해서 변수의 값을 가져와 보자!

 

- %d를 사용한 이유는 정수형으로 값을 출력하기 때문이다. 

- 포인터 변수 앞에 *을 붙여서 출력하면, 포인터가 가리키는 변수의 메모리 주소에 저장된 값을 가져온다.

 

그림으로 보면

포인터 변수 앞에 *(에스더리스크)을 붙이는 것을 역참조 연산자라고 부른다.

 

그렇다면 

 

이것을 이용해 num1에 값을 변경해보자

- *numPtr은 num1 변수 메모리 주소에 저장된 값을 가리키는데 이때 =으로 값을 저장하면

- num1 변수 메모리 주소에 저장된 값이 20으로 변경이 된다.

- 출력시 num1을 출력해보면 20이라는 결과가 나온다.

 

그림으로 간단하게 설명하면

- 우리는 이미 num1의 메모리 주소를 numPtr에 저장했다.

- 그리고 *numPtr을 사용해서 num1의 메모리주소에 저장된 값을 가리키며 =을 사용해 20이라는 값을 num1 메모리 주소에 저장했다.(역참조 연산자 사용)

 

 

728x90
728x90

우리는 지금까지 배워온 변수를 지정하는 방법은 아래 코드와 같이 변수를 지정해 줬다.

int a = 10;

그렇다면 이 변수는 어디에 저장이 될까?

 

메모리에 대해 깊게 다른 컨텐츠로 다루겠지만 포인터 부분에서 메모리에 대해 간단하게 알고 가야한다.

 

그 이유는

 

포인터에 대한 이해가 메모리 부분에서 어렵기 때문이다.

 

다시 본론으로..

 

우리가 변수를 지정하면 변수는 메모리에 일정 공간을 확보하고 그곳에서 원하는 값을 저장하고 불러오는 방식이다.

 

그렇다면

 

도대체 메모리 어느부분에 저장이 되는지 어디서 불러오는지 궁금증이 생길것이다.

 

아래 코드를 사용해서 메모리에 할당된 변수 메모리 주소를 확인할 수 있다.

- %p 서식 지정자를 사용하 16진수로 출력하고, & 주소 연산자를 변수 앞에 사용하면 변수의 메모리 주소를 16진수로 확인 할 수 있다. 

우리는 변수가 저장된 메모리 주소를 출력해 보았다.

 

 

이번에는 포인터 변수를 선언해보자

 

포인터 변수는 쉽게 설명하면 변수가 메모리 주소에 할당 되고 포인터 변수가 그 메모리 주소를 가리키는 것이다.

그림과 같이 numPtr 포인터 변수가 변수 num1의 메모리 주소를 가리키게 되는 방식이다.

 

그림이 이해가 안간다면 코드로 보자

출력을 하면 위 그림과 같이 같은 메모리 주소 16진수 값이 나온다.

 

코드를 해석해 보면

- 포인터 변수를 선언해줄때는 *(애스터리스크)를 자료형 뒤에 붙여준다.

- 포인터 변수를 선언 후 &가 붙은 변수의 메모리 주소를 포인터 변수에 저장한다.

- 포인터와 num1의 메모리 주소는 같다는 의미이다.

 

728x90
728x90

상수에 대해서 알고 있는가? 김상수

 

나는 상수에 대해 고등학교에서 배운 정의 밖에 몰랐다.

 

상수는 변하지 않는 값을 뜻한다. 변수를 선언해 보았기 때문에 알고 있다. 변수는 한 번 선언하고 값을 변경할 수 있지만 상수는 처음 선언할 때 값 고정이기 때문에 변하지 않는 값을 뜻한다.

 

상수를 사용해보자!

#include <stdio.h>

int main()
{
    const int con1 = 1;         // 상수. 선언과 동시에 초기화
    const float con2 = 0.1f;    // 상수. 선언과 동시에 초기화
    const char con3 = 'a';      // 상수. 선언과 동시에 초기화

    printf("%d %f %c\n", con1, con2, con3);    // 1 0.100000 a

    return 0;
}

 

 

728x90

'프로그래밍 > C 기본문법' 카테고리의 다른 글

UNIT34.2 역참조 연산자  (0) 2021.03.08
UNIT 34. 포인터 사용하기  (0) 2021.03.07
UNIT 9. 문자 자료형 사용하기  (0) 2021.02.20
UNIT. 8 실수 자료형  (0) 2021.02.20
UNIT 7. 정수 자료형  (0) 2021.02.19
728x90

정수, 실수 자료형에 대해서 공부해보았다.

 

그렇다면

 

이제 무엇을 할 차례일까

 

바로바로 문자 자료형이다. 

 

정수, 실수, 문자로 이루어져 있기 때문에 기억해보자

 

C언어에서는 정수 자료형인 char을 이용해서 문자 한 개를 저장한다.

 

char에 문자를 저장할 때는 문자 자체가 아니라 문자에 해당되는 정수값을 저장한다.

 

어려울게 없다. 문자에는 각각 해당하는 정수값이 있는데 이것을 아스키코드라고 부른다.

 

우리는 먼 훗날 아스키코드를 보면서 시스템보안을 다루는 날이 올것이다.

 

 

char을 사용해보자

char c1 = 'team';

- char로 문자는 ' '(작은따옴표)로 묶어서 표현한다.

- ' '(작은따옴표)는 문자 하나만 묶을 수 있으며 두 개 이상은 묶을 수 없다.

 

 

문자 자료형을 선언하고 출력해보자!

 char c1 = 'a';    // 문자 변수를 선언하고 문자 a를 저장
 char c2 = 'b';    // 문자 변수를 선언하고 문자 b를 저장
 
    // char를 %c로 출력하면 문자가 출력되고, %d로 출력하면 정숫값이 출력됨
    
  printf("%c, %d\n", c1, c1);    // a, 97: a의 ASCII 코드값은 97
  printf("%c, %d\n", c2, c2);    // b, 98: b의 ASCII 코드값은 98
 
  return 0;

- char 변수에 'a', 'b'라는 문자를 각각 c1, c2에 선언, 저장했다.

- 출력을 할 때 %c를 사용하여 문자를 출력하고, %d를 사용하여 정수값을 출력했다.

 

그리고 

 

문자를 넣지 않고 정수만으로 문자 자료형을 사용할 수 있다.

코드를 보자

char c1 = 97;    // a의 ASCII 코드값 97 저장
char c2 = 98;    // b의 ASCII 코드값 98 저장

// char를 %c로 출력하면 문자가 출력되고, %d로 출력하면 정숫값이 출력됨

printf("%c, %d\n", c1, c1); // a, 97
printf("%c, %d\n", c2, c2); // b, 98

return 0;

- 원래 작은따옴표를 사용하여 문자를 저장했지만, char을 사용하여 97이라는 a의 아스키 코드값을 입력하여 저장하면

- 출력했을 때 똑같이 출력이 가능하다.

 

-참고-

char의 크기 및 범위

자료형 크기 범위 비고
char
signed char
1바이트, 8비트 -128~127 문자 저장
unsigned char 1바이트, 8비트 0~255 바이트 단위 데이터 저장

 

10진수, 16진수, 문자 대응표

10진수 16진수 문자 10진수 16진수 문자 10진수 16진수 문자
32 0x20 공백(space) 64 0x40 @ 96 0x60 `
33 0x21 ! 65 0x41 A 97 0x61 a
34 0x22 " 66 0x42 B 98 0x62 b
35 0x23 # 67 0x43 C 99 0x63 c
36 0x24 $ 68 0x44 D 100 0x64 d
37 0x25 % 69 0x45 E 101 0x65 e
38 0x26 & 70 0x46 F 102 0x66 f
39 0x27 ' 71 0x47 G 103 0x67 g
40 0x28 ( 72 0x48 H 104 0x68 h
41 0x29 ) 73 0x49 I 105 0x69 i
42 0x2A * 74 0x4A J 106 0x6A j
43 0x2B + 75 0x4B K 107 0x6B k
44 0x2C , 76 0x4C L 108 0x6C l
45 0x2D - 77 0x4D M 109 0x6D m
46 0x2E . 78 0x4E N 110 0x6E n
47 0x2F / 79 0x4F O 111 0x6F o
48 0x30 0 80 0x50 P 112 0x70 p
49 0x31 1 81 0x51 Q 113 0x71 q
50 0x32 2 82 0x52 R 114 0x72 r
51 0x33 3 83 0x53 S 115 0x73 s
52 0x34 4 84 0x54 T 116 0x74 t
53 0x35 5 85 0x55 U 117 0x75 u
54 0x36 6 86 0x56 V 118 0x76 v
55 0x37 7 87 0x57 W 119 0x77 w
56 0x38 8 88 0x58 X 120 0x78 x
57 0x39 9 89 0x59 Y 121 0x79 y
58 0x3A : 90 0x5A Z 122 0x7A z
59 0x3B ; 91 0x5B [ 123 0x7B {
60 0x3C 92 0x5C \ 124 0x7C |
61 0x3D = 93 0x5D ] 125 0x7D }
62 0x3E 94 0x5E ^ 126 0x7E ~
63 0x3F ? 95 0x5F _      

 

728x90

'프로그래밍 > C 기본문법' 카테고리의 다른 글

UNIT 34. 포인터 사용하기  (0) 2021.03.07
UNIT 10. 상수 사용하기(수정중)  (2) 2021.02.21
UNIT. 8 실수 자료형  (0) 2021.02.20
UNIT 7. 정수 자료형  (0) 2021.02.19
UNIT 5. 변수  (0) 2021.02.18
728x90

저번에는 정수를 변수에 저장해보았다.

 

이번에는 소수점을 표현할 수 있는 실수를 변수에 저장해보자.

float num1 = 0.1f;               // 단정밀도 부동소수점 변수를 선언하고 값을 할당
                                     // float는 숫자 뒤에 f를 붙임

double num2 = 3867.215820;       // 배정밀도 부동소수점 변수를 선언하고 값을 할당
                                     // double은 숫자 뒤에 아무것도 붙이지 않음

long double num3 = 9.327513l;    // 배정밀도 부동소수점 변수를 선언하고 값을 할당
                                     // long double은 숫자 뒤에 l을 붙임

    // float와 double은 %f로 출력, long double은 %Lf로 출력
    printf("%f %f %Lf\n", num1, num2, num3);    // 0.100000 3867.215820 9.327513

- 소수점 변수를 선언하고 값을 저장한다. float num1 = 0.1f;

- float는 숫자 뒤에 f를 붙인다.

- double 소수점 변수를 선언해주고 값을 저장한다. double num2

- long double num3는 앞과 같은 방식이지만, 숫자 마지막에 l을 붙인다.

 

우리는 소수점을사용해서 실수를 저장했다.

* %f: 부동소수점(floating point)의 약어로 f를 사용한다.

  %lf: long floating point에서 point를 제외한 첫 글자를 따서 lf를 사용한다.

 

자료형 크기 범위 유효자릿수 비고
float 4바이트,
32비트
1.175494e-38~3.402823e+38 7 IEEE 754 단정밀도 부동소수점
double 8바이트,
64비트
2.225074e-308~1.797693e+308 16 IEEE 754 배정밀도 부동소수점
long
double
8바이트,
64비트
2.225074e-308~1.797693e+308 16 IEEE 754 배정밀도 부동소수점

 

우리는 추가적으로 지수 표기법에 대해서 알고 넘어가야한다.

 

지수 표기법은 숫자를 사용할때 1231233333333333333333333333333333333333333333333과 같이 길어질때 지수 표기법을 통해서 짧은 숫자와기호를 통해서 컴퓨터에 입력할 수 있다.

 

지수 표기법으로 실수 값을 출력해보자

float num1 = 3.e5f;             // 지수 표기법으로 300000을 표기
                                    // float는 숫자 뒤에 f를 붙임
 
double num2 = -1.3827e-2;       // 지수 표기법으로 -0.013827을 표기
                                    // double은 숫자 뒤에 아무것도 붙이지 않음

long double num3 = 5.21e+9l;    // 지수 표기법으로 5210000000을 표기
                                    // long double은 숫자 뒤에 l을 붙임

 // float와 double은 %f로 출력, long double은 %Lf로 출력
 printf("%f %f %Lf\n", num1, num2, num3); // 300000.000000 -0.013827 5210000000.000000

 // 지수 표기법으로 출력할 때는 float와 double은 %e로 출력, long double은 %Le로 출력
 printf("%e %e %Le\n", num1, num2, num3); // 3.000000e+05 -1.382700e-02 5.210000e+09

- 지수 표기법이라고 해서 변수를 선언하는 방식이 다른것은 아니다.

- 똑같다.

- 지수 표기법(과학적 표기법)은 정수 부분은 한 자리수만 적고, 소수 자릿수 뒤에 e와 지수를 표기한다.

 

 

실수 자료형도 정수 자료형과 마찬가지로 오버플로우, 언더플로우가 발생할 수 있다.

 

오버플로우와 언더플로우를 보자

#include <stdio.h>
#include <float.h>    // 실수 자료형의 양수 최솟값, 최댓값이 정의된 헤더 파일

int main()
{
    float num1 = FLT_MIN;    // float의 양수 최솟값
    float num2 = FLT_MAX;    // float의 양수 최댓값

    // float의 양수 최솟값을 100000000.0으로 나누면 아주 작은 수가 되면서 언더플로우 발생
    num1 = num1 / 100000000.0f;

    // float의 양수 최댓값에 1000.0을 곱하면 저장할 수 있는 범위를 넘어서므로 오버플로우 발생
    num2 = num2 * 1000.0f;

    printf("%e %e\n", num1, num2);    // 0.000000e+00 inf: 실수의 언더플로우는 0
                                      // 오버플로우는 무한대가 됨

    return 0;
}

- include <float.h> 는 실수 자료형의 최소값, 최대값이 정의된 헤더 파일로 코드에서 사용할 수 있게 해준다.

- FLT_MIN;과 MAX;는 각각 최소값과 최대값을 의미한다. 실수형 num1에 최소값을 저장해주고 num2에 최대값을 저장해주는 코드이다.

 

-참고-

서식 지정자 설명
%d 부호 있는 정수
%ld 부호 있는 long 정수
%lld 부호 있는 long long 정수
%u 부호 없는 정수
%lu 부호 없는 long 정수
%llu 부호 없는 long long 정수
%f float, double형 실수
%Lf long double형 실수
%e float, double형 실수를 지수 표기법으로 출력
%Le long double형 실수를 지수 표기법으로 출력
728x90
728x90

C언어를 배우면 다양한 형태의 자료형을 볼 수 있다. 

 

자주 사용하는 정수 자료형은 char과 int가 있다. 

 

자료형 크기 범위 비고
char
signed char
1바이트, 8비트 -128~127  
unsigned char 1바이트, 8비트 0~255  
short
short int
2바이트, 16비트 -32,768~32,767 int 생략 가능
unsigned short
unsigned short int
2바이트, 16비트 0~65,535 int 생략 가능
int
signed int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647  
unsigned
unsigned int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long
long int
signed long
signed long int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647 int 생략 가능
unsigned long
unsigned long int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long long
long long int
signed long long
signed long long int
8바이트, 64비트 -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
int 생략 가능
unsigned long long
unsigned long long int
8바이트, 64비트 0~18,446,744,073,709,551,615 int 생략 가능

- 부호 있는 정수는 음수를 포함하기때문에 그만큼 양수의 범위가 줄어든다. <- 무슨 말인지 참 어렵다. 그래도 이해할려고 노력해보자

 

 

정수 자료형을 코드로 사용해보자.

    char num1 = -10;           // 1바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
    short num2 = 30000;        // 2바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
    int num3 = -1234567890;    // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
    long num4 = 1234567890;    // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
    long long num5 = -1234567890123456789;     // 8바이트 부호 있는 정수형으로 변수를 
                                               // 선언하고 값 할당

    // char, short, int는 %d로 출력하고 long은 %ld, long long은 %lld로 출력
    printf("%d %d %d %ld %lld\n", num1, num2, num3, num4, num5);

- char 자료형은 1바이트 크기로 - 부호가 있는 정수형으로 변수 선언에 값을 할당해주었다.

- short 자료형은 2바이트 크기로 int를 생략하여 정수형으로 변수 선언에 값을 할당해주었다.

- int 자료형은 4바이트 크기로 정수형 변수 선언에 값을 할당해주었다.

- long 자료형은 4바이트 크기로 정수형 변수에 - 부호가 있는 변수 선언에 값을 할당해주었다.

- long long 자료형은 8바이트 크기로 - 부호가 있는 변수 선언에 값을 할당해주었다.

 

이렇게 보면 무슨 말인지 모르겠지만 위에 표를 참고하면서 정수 자료형에 크기와 범위를 따져가면서 변수를 선언해주면 된다.

 

만약

 

범위가 정해져있지만 값을 넘게 저장하거나 적게 저장할 경우 어떻게 될까

 

우린 이것을 오버플로우, 언더플로우 라고 말한다.

 

오버플로우에 예를 보자

char num1 = 128;             // char에 저장할 수 있는 최댓값 127보다 큰 수를 할당
                                 // 오버플로우 발생

- char에 저장 가능한 최대값은 127이다 이보다 더 큰 128을 저장하고 출력하면 -128이 출력

- char 범위에 가장 작은 -128이 출력된다. 이와같이 범위보다 넘는 값을 저장하면 범위에 시작 최소값이 출력된다.

 

반대로 언더플로우에 예를 보자

char num1 = -129;             // char에 저장할 수 있는 최소값 -128보다 작은 수를 할당
                                 // 언더플로우 발생

- char 저장 값 최소 범위 -128보다 작은 -129를 저장해서 출력하면 127이 출력

- char 범위에 가장 큰 127이 출력된다. 이와같이 범위보다 작은 값을 저장하면 범위에 끝 최대값이 출력된다.

 

 

728x90

'프로그래밍 > C 기본문법' 카테고리의 다른 글

UNIT 9. 문자 자료형 사용하기  (0) 2021.02.20
UNIT. 8 실수 자료형  (0) 2021.02.20
UNIT 5. 변수  (0) 2021.02.18
UNIT 4. 세미콜론, 주석, 중괄호, 들여쓰기  (0) 2021.02.18
UNIT 3. Hello, world 출력하기  (0) 2021.02.16
728x90

코드를 작성하면서 값을 다루기 위해서는 변수를 사용해야 한다. 

 

C언어에서 변수를 만들어보고 값을 저장하는 방법을 공부해 보자.

 

자료형 변수를 선언하는 방법은

int 변수이름;

으로 변수 이름을 원하는 방식으로 작성할 수 있지만 공통 규칙이 있다.

 

- 영문 문자와 숫자를 사용할 수 있다.

- 대소문자를 구분해야한다.

- 문자부터 시작해야 하며 숫자부터 시작하면 안된다.

- _(밑줄)로 시작할 수 있다.

- C언어의 키워드(int, short, long, float, void, if, for, while, swith 등)는 사용할 수 없다.

 

* 변수를 선언하고 맨 뒤에 ;(세미콜론)을 붙여주어야 한다.

 

변수를 만들었다면 그 변수에 값을 저장해보자

int num1;    // 정수형 변수 선언
int num2;
int num3;

num1 = 10;   // 변수에 값 할당(저장)
num2 = 20;
num3 = 30;

- 정수형 int로 num1이라는 변수를 선언해주고

- num1 변수에 10이라는 값을 할당 해준다.

 

변수 선언을 하고 값을 할당 했다면 출력을 해보자

printf("%d %d %d\n", num1, num2, num3);    // 10 20 30: 변수에 저장된 값을 %d로 출력

 - %d는 10진수를 출력할 때 사용하는 서식 지정자이다. (기억하자) %d 하나에 변수 하나가 대응된다.

 

이렇게 하나씩 변수를 선언 해주는 방법이 있고, 여러 변수를 한번에 선언해주는 방법도 있다.

 int num1, num2, num3;    // 변수를 콤마로 구분하여 변수 여러 개를 선언

- 정수형 int에 num1, num2, num3를 한번에 선언해주었다.

 

그리고 선언과 동시에 값을 할당하는 방법이 있다.

#include <stdio.h>

int main()
{
    int num1 = 10;               // 변수를 선언하면서 값 할당(초기화)
    int num2 = 20, num3 = 30;    // 변수 여러 개를 선언하면서 값 할당(초기화)

    printf("%d %d %d\n", num1, num2, num3);    // 10 20 30: 변수에 저장된 값을 %d로 출력

    return 0;
}

- int 정수형으로 num1을 선언 해주면서 = 할당 값을 선언해주면 된다.

- 값 할당(초기화)라고 이야기 하는데 추후 반복문 조건문에서 많이 사용된다.

728x90

'프로그래밍 > C 기본문법' 카테고리의 다른 글

UNIT. 8 실수 자료형  (0) 2021.02.20
UNIT 7. 정수 자료형  (0) 2021.02.19
UNIT 4. 세미콜론, 주석, 중괄호, 들여쓰기  (0) 2021.02.18
UNIT 3. Hello, world 출력하기  (0) 2021.02.16
UNIT 1. C언어를 시작  (0) 2021.02.16
728x90

1. ; (세미콜론)

우리는 지금까지 파이썬을 사용하면서 코드에 세미콜론을 붙이는 경우는 없었다.

 

C언어에서는 구문이 끝날 때  ; (세미콜론)을 붙인다.

printf("Hello, TeamH4C\n");

*세미콜론을 생략하면 컴파일 에러가 발생한다. 진짜진짜 우리가 코드를 짜면서 세미콜론을 까먹고 안붙이는 경우가 많은데 예전에는 이러한 오류를 찾느라 많은 시간을 소비했다고 한다.

 

 

2. 주석

파이썬에서도 주석을 사용하는 경우가 기억이 난다.

 

주로 코드에 대한 설명을 적으면서 임시파일로 컴파일 되지 않을 코드에 사용한다.

 

주석에 종류는 한 줄 주석과 범위 주석 두 가지가 있는데

 

한 줄 주석부터 보자!

// Hello, TeamH4C! 출력
printf("Hello, TeamH4C\n");

- 코드 맨 앞에 // 를 사용하면 그 줄은 주석 처리가 된다. 2 line은 영향을 받지 않는다.

 

범위 주석을 보자

/*
printf("Hello, TeamH4C\n");
printf("H4CH4C");
*/

- 위 코드가 범위 주석이다. 내가 주석으로 시작하는 부분에 /* 으로 시작해서 주석이 끝나는 코드 뒤에 */로 마무리해주면 범위 주석이 만들어진다.

 

 

3. 중괄호

C언어는 여러 코드에서 { }중괄호를 많이 사용한다. 중괄호는 코드의 범위를 나타낸다.

중괄호를 사용해 범위를 나타내 보자.

int main()
{
	printf("Hello, TeamH4C\n"_);
	return 0;
}

- 코드 중 중괄호 부분은 main함수에 소속된 코드이다.

- main 함수에 있는 코드로 생각하면 이해가 쉽다.

 

if (a > 10)
{
	printf("Team");
}

for (int i = 0; i < 10; i++)
{
	printf("Team, H4C\n");
}

- 중괄호는 if, for 등 키워드가 코드 영역에서 자신에 영향이 있다면 영역을 정할때 사용한다.

 

또 

 

구조체(공용체, 열거형)를 정의할 때 중괄호를 사용한다.

 

 

 

4. 들여쓰기

들여쓰기는 프로그래밍 언어에서 자주 언급이 된다 그 이유는 얼마나 코드를 깔끔하게 짜는지 전체적인 코드에 영향을 주기 때문이다. 우리는 코딩을 하면서 들여쓰기를 하는 필연적인 습관을 가지고 있는게 좋다.

 

들여쓰기 방법은

 

- 공백 2칸

- 공백 4칸

- 탭 1칸

 

3가지를 주로 사용한다. 컴파일 에러가 뜨는것이 아니기 때문에 사람들 마다 들여쓰기 방법이 다르다. 다만 코드를 작성하면서 보기 쉽게 들여쓰기를 규칙적으로 하면 깔끔한 코드에 가까워진다.

728x90

'프로그래밍 > C 기본문법' 카테고리의 다른 글

UNIT. 8 실수 자료형  (0) 2021.02.20
UNIT 7. 정수 자료형  (0) 2021.02.19
UNIT 5. 변수  (0) 2021.02.18
UNIT 3. Hello, world 출력하기  (0) 2021.02.16
UNIT 1. C언어를 시작  (0) 2021.02.16

+ Recent posts