*데이터(정보)를 저장하는 공간,메모리 

 

- 컴퓨터는 주기억 장치로 램(Ram, Random Access Memory)을 사용하기 때문에 보통 메모리라고 하면 램을 의미한다.

 

- 메모리는 1바이트(byte)단위로 주소가 매겨져 있다.

 

- 주소가 1바이트 단위로 부여돼 있다고 해서 데이터가 꼭 1바이트 단위로 저장되어야 하는것은 아니다.

 

- 메모리의 최소 저장 단위는 비트(bit)이다.

 

- bit -> 컴퓨터가 표현하는 데이터의 최소단위

           0과1로 된 2진수

 

- 1bit -> 0,1

  2bit -> 00 01 10 11 4가지

 

- 1비트가 증가할 때마다 저장 단위가 2의 배수만큼 늘어난다.

 

- 비트가 8개 모이면 새로운 단위를 사용하는데 이것을 바이트(byte)라고 한다.

 

- 데이터를 저장할 때 메모리를 절약하기 위해서 데이터의 유효범위를 예상하고 적합한 크기를 결정하는것은

  메모리에 데이터를 저장하는데 필요한 가장 기본적인 작업이다. 

 

 

#자료형

 

* 자료형은 왜 필요할까 ?

 

- 자신이 사용할 데이터에 크기에 맞게 메모리(저장공간)를 할당해서 사용해야 한다. 그래서 메모리를 사용할 때

  몇 바이트의 메모를 사용할 것인지를 명시해야 하는데 이것을 데이터 타입(Data Type) 또는 자료형이라고 한다.

  (메모리를 사용하는 단위를 자료형이라고 한다.)

 

- C언어는 사용빈도가 높은 자료형을 예약어로 제공(Built-in Data Type)하고 , 나머지는 사용자가 만들어서 사용할 수 있는

  문법 (User-defind Data Type)을 제공한다.

 

 

#자료형의 종류

 

 

 

- 메모리공간 크기 확인 연산자(sizeof)

  메모리의 크기를 바이트(byte)단위로 계산해서 반환하는 연산자

 

sizeof(기본 자료형,내가 선언한 변수이름)

 

 

 

 

 

#int 변수 선언 및 초기화 (정수 4byte)

 

- 가장 기본이 되는 자료형

 

- C에서 가장빠르고 효율적으로 연산이 가능한 자료형이다.

 

- CPU에 따라서 크기는 달라진다. 

  16bit 2byte shrot

  32bit 4byte 

  64bit 8byte

 

- 완벽한 8byte크기를 보려면 컴파일 성능,os,하드웨어

 

 

 

#float & double 변수 선언 및 초기화 (실수 4byte,8byte)

 

- 실수 0.000000 까지 표현한다.

 

- 정수보다 실수로 표현할 수 있는 방법이 더 많다.

  int -> long int -> float -> double -> long double    

 

 

 

#char 변수 선언 및 초기화 [문자 1개]

 

- char는 ASCII CODE에 존재하는 문자

 

- 표현할 수 있는 데이터

  알파벳 , 정수 ,기호 등

 

 

 

#char[] 변수 선언 및 초기화 [공간갯수]

 

- 문자열을 입력하고 싶을 때는 char 1byte의 공간을 붙여서 사용

 

- 한글 = 2byte 영어 = 1byte를 차지한다.

 

- 문자열의 끝에는 문자가 끝났다는 null = \0이 자동적으로 붙는다.

 

Ex) "HELLO~" 문자열 메모리 공간 갯수

- 문자가 6개이므로 6바이트의 크기를 차지한다고 생각하겠지만 문자끝에 0이붙기 때문에 실제 메모리 구성은 다음과 같다. 

 

↓ 실제 메모리 구성

  

 

- 공간의 갯수를 구하고 +1하여 출력하거나 그보다 높은값으로 출력한다.

 

 

 

#scanf()

 

- 키보드로부터 입력을 받기 위한 라이브러리 함수

 

- 키보드로부터 값을 받아서 변수에 저장한다.

- 변수의 주소를 필요로 한다.

   scanf("%d",&x);  변수의 주소는 &x로 구할 수 있다. 

 

- 형식 지정자와 변수의 자료형은 일치해야 한다.

   scanf("%d %f",number, &grade); ← 형식 제어 문자열

 

 

 

#scanf 덧셈 프로그램

 

 

 

*변수,상수

 

- 변수(Variable)는 변하는 값이며, 프로그래밍에서는 두가지 의미를 가진다.

 

- 1. 프로그램이 실행되는 동안 지속적으로 값이 바뀌는 정보이다.

 

- 2. 사용자로부터 데이터를 받거라 처리하기 위한 저장공간이다.

 

- 변수 이름은 데이터가 저장되는 공간(메모리)을 가리키는 별명이다.

 

 

#상수

 

- 상수(Constant)는 프로그램을 실행할 때 한번 값이 결정되면 프로그램이 끝날 때 까지

  다른값으로 바뀌지 않는 정보를 말한다. 다시 말해 상수는 변하지 않는 숫자를 의미한다.

 

Ex) 3.14 , 100 , 'A' , "Hello World!"

 

 

 

#변수 이름을 정할때 기억해야 할 것

 

- 변수 이름은 영문자 a~z , A~Z , 숫자 0~9 그리고  _ (밑줄)을 조합하여 구성할 수 있다.

 

- 모두 숫자로 구성하거나 숫자로 시작하는 문자열은 변수 이름으로 사용할 수 없다.

 

- 공백을 포함할 수 없다.

 

- 대,소문자를 구별하기 때문에 (name , Name , NAME , naME) 이와 같이 사용한 4개의 변수는

  서로 다른 변수 이름으로 처리된다.

 

- 예약어를 변수 이름으로 사용할 수 없다.

   EX) 'int' , 'char' ...

 

 

#변수 선언

 

- 컴파일러에게 어떤 변수를 사용하겠다고 미리 알리는것

 

   자료형    변수이름;

 

 

 

#변수에 값을 저장하는 방법

 

 

 

 

 

- 변수를 선언하면서 초깃값을 대입하는 것을 초기화라고 한다.

 

 

 

 

#변수의 사용

 

 

 

# 기능에 따른 연산자의 분류

 

                 연산자의 분류

                           연산자

                                의미

                       대입

                               =

                    오른쪽을 왼쪽에 대입

                       산술

                       +  -  *  /  %

                   사칙연산과 나머지 연산

                       부호

                           +  -

 

                       증감

                          ++  --

                         증가,감소 연산

                       관계

                    > < == != >= <=      

                    오른쪽과 왼쪽을 비교

                       논리

                           && || ! 

                       논리적인 AND,OR

                       조건

                               ?

                       조건에 따라 선택

                       콤마

                               , 

               피연산자들을 순차적으로 실행 

               비트 단위 연산자

                      & | ^ ~ << >>  

              비트별 AND,OR,XOR,이동,반전

                  sizeof 연산자

                            sizeof

    자료형이나 변수의 크기를 바이트 단위로 반환

                      형변환

                            (type)

              변수나 상수의 자료형을 변환

                  포인터 연산자

                            * & []

      주소계산,포인터가 가리키는 곳의 내용 추출

                  구조체 연산자

                             .  ->

                       구조체의 맴버 참조

 

 

 

#산술 연산자

 

                     연산자

                        기호

                      의미

                     예(Ex)

                      덧셈

                          +

                x와y를 더한다.

                       x+y

                      뺄셈

                          -

                 x와y를 뺀다

                       x-y

                      곱셈

                          *

                x와y를 곱한다.

                       x*y

                    나눗셈

                          /

                x와y를 나눈다.

                       x/y

                    나머지

                          %

         x와y를 나눌때 나머지값 

                       x%y

 

 

#산술연산자를 사용한 예제

 

 

 

 

#증감 연산자

 

                      증감 연산자   

                                              의미

                          ++x

                    x값을 먼저 증가한 후에 다른연산에 사용한다.

                    이 수식의 값은 증가된 x값이다 

                          x++

                    x값을 먼저 사용한 후에 증가한다.

                    이 수식의 값은 증가되지 않은 원래의 x값이다.

                          --x

                    x값을 먼저 감소한 후에 다른 연산에 사용한다.

                    이 수식의 값은 감소된 x값이다.

                          x-- 

                    x값은 먼저 사용한 후에 감소한다.

                    이 수식의 값은 감소되지 않은 원래의 x값이다.

 

 

 

 

 

 

 

 

 

 

 

#복합 대입 연산자

 

 

                    복합 대입 연산자

                               의미

                            x += y

                            x = x + y

                            x -= y

                            x = x - y

                            x *=y

                            x = x * y

                            x /= y

                            x = x / y

                           x %= y

                            x = x % y

                           x &= y

                            x = x & y

                           x |= y

                            x = x | y

                           x ^= y

                            x = x ^ y

                           x >>= y

                            x = x >> y

                           x <<= y

                            x = x << y

 

 

 

 #관계 연산자

 

- 두개의 피연산자를 비교하는 연산자

 

- 결과값은 참(1) 아니면 거짓(0)

 

 

                        연산자 기호

                                 의미

                    사용 예

                              ==

                         x와 y가 같은가?

                    x == y

                              !=

                         x와 y가 다른가?

                    x != y

                              >

                         x가 y보다 큰가?

                      x > y

                              <

                         x가 y보다 작은가?

                      x < y

                             >=

                   x가 y보다 크거나 같은가?

                    x >= y

                             <=

                   x가 y보다 작거나 같은가?

                    x <= y

 

 

 

 

 

 

#논리 연산자

 

 

                 연산자 기호

                   사용 예

                                   의미 

                      &&

                   x && y

 AND연산 , x와y가 모두 참이면 참 , 그렇지 않으면 거짓

                       ||

                     x || y

 OR연산 , x나y중에서 하나만 참이면 참, 모두 거짓이면 거짓

                       !

                      !x

 NOT연산 , x가 참이면 거짓 , x가 거짓이면 참

 

 

 

 

 

#조건 연산자 ( ? )

 

- max_value = (x>y) ? x : y;

 

- x>y가 참이면 x가 수식의 값이 된다. x>y가 거짓이면 y가 수식의 값이 된다.

 

*Escape Sequence (특수 문자)

 

- 데이터에 대한 입출력 형식과 관련된 특수 기호 문자

 

                               특수 문자

                                    특수 문자 의미

                                 ' \n ' 

                          New Line :  새로운 줄로 이동

                                 ' \r ' 

                                 줄의 처음으로 이동

                                 ' \b ' 

                              한 문자 왼쪽으로 이동 

                                 ' \t  ' 

                                    탭 만큼 이동

                                 ' \\ ' 

                             \문자 자체를 화면에 출력

                                 ' \' ,\" ' 

                                 뒤에 " , " 표시 출력

                                 ' \? ' 

                                 물음표 표시 출력

 

 

문자를 " "으로 지정해서 출력하고 싶다면 백슬래시로 지정을 해주면 된다.

 

 

#서식 문자

 

- 서식문자 : 출력 형태를 지정하는 용도

  printf("출력 서식", "출력 대상");

 

                            제어 문자

                                출력 결과

                               %d

                            10진(Decimal)정수

                               %f

                        10진형 부동(Floating)정수 

                               %c

                           단일 문자(Character)

                               %s

                               문자열(String) 

                               %o

                               8진(Octal)정수

                               %x

                          16진(Hexa_demical)정수

                               %u

                      부호없는(unsigned)10진 정수  

 

 

 

 

 

아스키(ASCII)코드

 

- 컴퓨터에서는 대부분 문자를 숫자로 변환해서 전송하는 방법을 사용한다.

 

- 약속한 정보가 서로 달라 문자를 제대로 전송할 수 없다는 문제점이 있다.

 

- 이런 문제점 때문에 문자를 숫자로 표현하기 위한 표준이 필요했는데 그 표준이 아스키(ASCII)코드이다.

  ASCII [American Standard Code for Information Interchange]

 

- 출력 불가능한 제어문자 33개(0~32번) 출력 가능한 문자 95개로 이루어져있다.

  총 128개(8비트 중 7비트만 사용)의 코드로 구성된다.

 

#아스키 코드 표

 

 

'C언어 > C언어' 카테고리의 다른 글

C언어 [반복문 while , do~while , for]  (0) 2017.10.24
C언어 [형변환,조건문 if문,switch문]  (0) 2017.10.22
C언어 [자료형,scanf]  (0) 2017.10.19
C언어 [변수와 상수,연산자]  (0) 2017.10.18
C언어 [C언어 소개]  (0) 2017.10.14

+ Recent posts