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진수 값
ㄹ.문자열 리터럴
큰따옴표로 묶인 문자들.
'학위공부 > 독학사 요점정리' 카테고리의 다른 글
[독학사/컴공/객체지향프로그래밍]5.연산자, 수식, 문장 (0) | 2020.06.29 |
---|---|
[독학사/컴공/객체지향프로그래밍]4.변수선언 (0) | 2020.06.29 |
[독학사/컴공/객체지향프로그래밍]2.객체지향 언어의 특징 (1) | 2020.06.29 |
[독학사/컴공/객체지향프로그래밍]1.객체지향의 기본적 개념 (0) | 2020.06.29 |
[독학사/프로그래밍언어론] 1 - 가 : 프로그래밍 언어의 소개.2 (0) | 2020.06.29 |