차례: -char 형 변수 -char 형 포인터 변수 -string -char 배열 -ponter 배열
c 언어에서는 메모리의 주소 개념을 뺀 후 문자를 정확하게 이해하기가 힘들다.(1) BYTE addressable
이 개념은 포인터 변수를 이해하는데 반드시 알아야 하는 내용이므로 확실히 이해하고 넘어가자.바이트 단위로 주소가 부여(byte addressable)되어 있다는 개념이다.
현재 우리가 사용하고 있는 컴퓨터는 주 기억장치에 주소에 부여되어형태가 8 비트 즉 1 바이트 단위로 주소가 부여되어 있다.
주소를 기억하기 위해선 32 비트가 필요하다. 주소를 기억하는 변수를 포인터 변수라 하는데 포인터 변수의 크기는 4 바이트란 것을 기억하자.
(2) ASCII code
자판 A 를 누르면 이 A 는 컴퓨터 기억장치에 저장된후 화면에 표시된다. 그러면 이 A 는 컴퓨터 내부에 어떻게 기억될 까? 그냥 A 로 기억될까? 컴퓨터 내부적을 2 진수 체계를 사용한다. 당연히 이 A 는 2 진수 얼마로 약속이 되어 있을 것이다. 이 약속을 code 라한다.이런한 약속방법에는 몇가지가 있는데 우리가 사용하고 있는 컴퓨터가 약속한 코드는 ascii code 이다. 이 코든 체계는 7 bit 로 문자 하나씩을 약속하여 사용한다.
(숫자는 16 진 표현)
문자 ASCII 코드 문자 ASCII 코드 문자 ASCII 코드 A 41 a 61 0 30 B 42 b 62 1 31 ... ... ... ... ... ... (유제) 소문자 k 는 ascii 코드에서 어떻게 약속되어 있는가?
문자뭐가 2 진수 뭐로 약속이되어 있는지를 다 외울 필요는 없지만 기본적으로 몇가지는 외우는게 좋을 것 같다.
ascii 코드 00 에서 1F 까지는 대응되는 문자의 의미보다는 제어문자(줄바꿈, 벨,...) 로 사용된다. 그 중에서ascii 00 는 대응되는 문자는 없다. 이를 널 문자라 한다.
- 대문자 A 는 16 진법 41
- 소문자 a 는 16 진법 61
- 문자 0 는 16 진법 30
1) 숫자와 문자의 차이
차이를 이해하는 게 어렵다.예를 들어,3 은 숫자이고 , '3' 은 문자 3 이다. 이는 완전히 다른 의미가 된다. 즉 3 은 2 진수 11 이고 문자 '3' 은 이진수 0011 0011(0x 33) 을 의미한다.
2) c 언어에서 표현 가능한 진법
c 언어로 표현 가능한 진법으로는 3 가지 진법이 있다.예를 들어,
- 16 진법
- 0x숫자 -- 이 숫자는 16 진법의 수
- 8 진법
- 0숫자 -- 이 숫자는 8 진법의 수
- 10 진법
- 숫자 -- 이 숫자는 10 진법의 수
c 언어에서는 다음은 같은 의미
- 0x10 은 10 진수 16 을
- 010 은 10 진수 8 을
- 10 은 10 진수 10 을 의미한다.
'A'= 0x41 = 0101 = 653) escape sequence
(보기) 아래 네모에 무엇을 넣어야 0 을 만들 수 있을까?
- A 에 홀로 따옴표 를 붙이면 대 문자 'A' , 0x41 이 되고.
- a 에 홀로 따옴표 를 붙이면 소 문자 'a' , 0x61 이 되고 .
- 0 에 홀로 따옴표를 붙이면 문자 '0' , 0x 30 이 된다.
일반적인 방법으로는 네모속에 어떤 것을 넣더라도 0 을 만들 수 없다. 그래서 c 언어에서는 \숫자 형태를 사용하면 그대로 숫자로 나올수 있는 형태를 제공한다.
'\0' 을 널 문자라하고 , 이런 형태로 주로 사용하는 몇가지를 보면
- '\n' 다음 줄
- '\t' 탭
- '\7' 벨