본문 바로가기

학위공부/독학사 요점정리

[독학사/컴공/객체지향프로그래밍]3.자료형

반응형

2.자료형과 변수

2.1.자료형

 

2.1.1.기본자료형

기본 자료형으로 선언된 변수에는 실제 값이 저장된다.

 

ㄱ.논리형 - 참과 거짓을 나타내는 변수로 true(1)이나 false(0)값이 저장된다.

boolean - 1bit

 

ㄴ.문자형 - 문자를 나타내는 변수로 문자의 ASCII코드나 EBCDIC코드에 대응하는 숫자값으로 저장된다.

char - 8 or 16bit (언어에 따라 다름)

 

ㄷ.정수형 - 정수가 저장된다.

byte - 8bit

short - 16bit

int - 32bit

long - 64bit

 

ㄹ.실수형 - 소수를 지수부와 유효숫자를 나타내는 소수부로 나누어 저장한다.

float - 32bit

double - 64bit

long double - 80bit

 

2.1.2.배열 선언

2.1.3.배열 생성 및 이용

C 프로그래밍 입문/데이터 배열 - 위키책

C 프로그래밍 입문/데이터 배열 < C 프로그래밍 입문 데이터 배열 [ +/- ] 서너 개의 데이터를 다룰 때엔 변수를 이용하면 충분히 데이터를 저장...

ko.wikibooks.org

위 링크로 대체하겠습니다

 

2.1.4.열거형

변수에 저장할 수 있는 값을 문자열로 정의해서 나열한 것.

 

 

enum week { SUN, MON, TUE=4, WED, THU, FRI, SAT };

로 선언했을 시,

 

 

SUN=0, MON=1, TUE=4, WED=5 THU=6.. 의 값을 가짐

 

 

열거형 변수 선언과 입력은 다음과 같다.

enum week wk;

wk = MON;

 

 

열거형 변수 wk는 정수값을 저장하는 int형 크기이며, int 범위의 정수값이라면 어떤 값이든 저장한다.

열거형을 사용하는 이유는 코드의 가독성을 높이기 위해 사용한다.

 

 

2.1.5.포인터(in C++)

-포인트 변수에 사용되는 VOID자료형은 임의의 자료형을 가리킴.

-'cout' c++의 헤더파일 iostream에서 사용하는 출력

-'*'로 선언한 변수는 자료형에 상관없이 주소값을 저장하는 변수(시스템에 따라 2, 4, 8 Byte )

-포인터의 포인터를 선언할 수 있다.

 

 

선언

int a=10, *pa;

pa=&a;

 

 

출력

cout << "&a = " << &a << ", a = " << a << "\n";

cout << "pa = " << pa << ", *pa = " << *pa << "\n";

 

 

출력값

&a = (a 16진수 8비트 주소값), a = 10

pa = (a 16진수 8비트 주소값), *pa = 10

 

 

2.1.6.참조 자료형(in C++)

.lvalue  rvalue

inx x = 3 + 4;

라는 식이 있을 때,

lvalue: 식 밖에서도 값이 유지되는 'x', 어떠한 메모리 위치를 가리키며 & 연산자를 통해 그 위치를 참조할 수 있는 값.

rvalue: 식 밖에서 유지되지 않는 임시 값 '3 + 4'

 

 

.Lvalue 참조 선언자: &

-lvalue 참조를 개체의 또 다른 이름으로 간주함.

-lvalue 참조 선언은 무조건 초기화되어야 하며 변경될 수 없음.

 

 

예시

int main()  

{    

   Person myFriend;   

   Person &rFriend = myFriend;  

  

   myFriend.Name = "Bill";  

   rFriend.Age = 40;  

  

   cout << rFriend.Name << " is " << myFriend.Age << endl; 

 

 

 

출력

Bill is 40

->rFriend myFriend에 대한 참조이기 때문에 변수 중 하나를 업데이트하면 동일한 개체가 변경됨.

 

 

.Rvalue 참조 선언자: &&

-'move'의 구현과 '완벽한 전달'을 위해 만들어짐.

-move연산을 구현해 알고리즘 속도를 향상시킴

-완벽한 전달로 전달중에 발생할 수 있는 오류를 줄임

 

 

예시

class MemoryBlock  

 

};  

  

void g(const MemoryBlock&)   

 

   cout << "In g(const MemoryBlock&)." << endl;  

 

  

void g(MemoryBlock&&)   

 

   cout << "In g(MemoryBlock&&)." << endl; 

 

  

MemoryBlock&& f(MemoryBlock&& block)  

 

   g(block); 

   return block;  

 

  

int main()  

 

   g(f(MemoryBlock()));

 

 

 

출력

In g(const MemoryBlock&).  

In g(MemoryBlock&&).  

->rvalue가 매개변수로 쓰이면 lvalue로 처리된다.

 

 

2.1.7.리터럴

""그 자체로 고정된 값을 표현하는 것을 의미한다.

 

 

int a = 7;

라는 식이 있을 때, a는 변수이고 7은 리터럴이다.

 

 

.정수 리터럴

접두사

-없음 = 10진수, : 430

-0 = 8진수,  : 036

-0x = 16진수,  : 0x1f

 

 

접미사

-u(U) = unsgined,  : 320u

-l(L) = long,  : 210L, 210UL(unsgined long)

 

 

.실수 리터럴

-십진표현법,  : 3.14

-지수표현법,  : 314E-2

-숫자 값에 접미사 "f(F)가 붙으면 실수 리터럴을 의미"

 

 

.문자 리터럴

작은따옴표(')로 묶어서 표현한다. 일반 문자('a','b'..), 이스케이프 시퀀스('\n')등으로 표현된다.

 

 

-이스케이프 시퀀스

\\ = \

\' = '

\" = "

\? = ?

\a = bell, 스피커를 통해 ''소리를 내며, 경우에 따라 화면에 표시

\b = backspace, 화면 상에서 백스페이스는 커서 이전의 문자를 지우는 효과가 있지만, 프린터에서는 이미 인쇄한 문자를 지울 수 있는 바업ㅂ이 없기 때문에 주로 두개의 문자를 겹쳐 찍으려고 할때 사용되었음.

\f = form feed, 페이지를 넘기는 용도

\n = newline,줄바꿈을 하려는 용도

\r = carriage return,커서가 있는 줄의 가장 첫 위치로 커서를 이동

\t = horiz tap,다음 번 탭 위치로 이동

\v = vert tab,다음 번 수직 탭 위치로 이동

\ooo = 8진수 값

\xhh = 16진수 값

 

 

.문자열 리터럴

큰따옴표로 묶인 문자들.

반응형