본문 바로가기
C언어/C언어 간단 개념 정리

15강, 16강 .C언어의 5대 상수

by Dev dreamer 2023. 1. 11.

출처: 정혜경 판타스틱 자료구조 입문 (in C)

[무료] 정혜경 판타스틱 자료구조 입문 (in C) - 인프런 | 강의 (inflearn.com)

 

 

 

 

 

상수 -> 프로그램내에서 다뤄야할 데이터

 

숫자 상수 : 정수형 상수(10진수, 8진수, 16진수)와 실수형 상수(10진수)가 있다.

 

1. 정수형 상수

 

8진수 같은 경우에 앞에 0이 붙고

16진수는 앞에 0x가 붙는다.

 

읽을때도 십,백,만 등이아니라

맨앞에서 부터 그냥 숫자를 쭉 읽으면 된다.

0123 => 8진수 일이삼

 

 

 

 

 

 

 

 

 

1Byte = 8bit 1bit 는 0과 1로 구성되어있다

즉 1Byte 는 2의 8승 즉 256가지의 데이터 가지수를 나타내고

 

int 의 경우 4Byte 의 공간을 차지하므로 2의 32승 가지 경우를 나타낼 수 가 있다.

 

2. 실수형 상수=> 실수형은 오로지 10진수로만!!

 

0.12325E2

여기서 E는 exponent 10의 지수승

 

 

즉 0.12325E2 는 0.12325*10에 2승이다.

 

소수점으로 엄청 작은숫자거나 큰숫자 일때 지수형 표기를 한다.

 

 

 

 

 

 

 

 

 

 

문자상수 : 단일인용부호를 이용해서 표현하며 메모리에 한 Byte 크기로 할당.

기능문자나 스페이스 공간도 문자로 취급된다.

 

char 1byte 짜리 문자형 int 는 4 byte 짜리 문자형

 

숫자상수 3과 문자 상수 '3'의 차이를보면

3은 3이라는 값이 들어가지만 문자상수 '3'은

3의 아스키코드값인 51이 들어간다.

 

 

 

 

 

문자열 상수 : 이중인용부호를 이용해서 표현하며, 문자열의 끝표시인 \0(NULL문자)로 종료하는 데이터.

 

상수는 고정길이 상수와 가변길이 상수로 나뉜다.

고정 길이 상수

 

 

정수 4Byte

실수 8Byte

문자 1Byte

주소상수

2or4or8Byte

 

 

 

 

 

 

 

 

가변길이 상수 ->문자열 상수

 

문자열은 길이가 언제 끝날지 모르기 때문에 끝에 \0을 넣음으로써 끝을 알림.

 

널문자 역시 공간을 차지함을 알 수 있다. 널의 아스키코드는 널이다.

 

 

 

 

 

 

NullString 을 기억해야한다. 널은 항상 들어간다는 것을 기억해라!!

 

char 형태로 선언한 C에 "3"이라는 문자열을 넣으려고 하면 뒤에 널값을 넣을 공간이 없기 때문에 오류가 발생한다.

이때 배열로 선언해서 넣을 수 있다.

 

 

심볼릭(symbolic) 상수

symbolic 상수는 그렇다면 고정길이상수일까 가변길이 상수일까??

어떤것을 정의하느냐에 따라 다르다.

 

 

주소상수 : 변수의 시작주소, 배열의 시작주소, 배열원소의 시작주소, 함수의 시작주소 등.

 

 

 

변수에도 차원이 있다.

아무것도 쓰지않고 선언만 해주면 0차원 변수.

그냥 선언만 하면 0차원

 

변수 앞에 *을 붙이면 포인터라고 하며 1차원을 갖게됨.

 

 

 

 

포인터 변수는 1차원 이상! c 언어에서는 논리적으로 무한대 차원까지 가능하다.

 

일반변수는 일반 상수를 저장하지만

포인터 변수는 주소상수를 저장한다! 즉 어떠한 주소상수의 시작주소를 정한다.

 

포인터 변수는 a라는 주소의 시작주소를 저장함과 동시에 해당 주소를 가르킨다!!!

포인터 변수는 본인이 integer 를 가지고 있는 것이아니라 integer 값이 들어가있는 기억공간의 주소를 가르키는것.

 

 

포인터 변수에 왜 200이 들어가냐면 주소연산자(&)가 붙은 a 라는 주소를 p 에 넣은것이기 때문에 200의 값을 갖게 된다.

 

댓글