char 4

[CS50] 문자열 복사

지난 포스팅에서 문자열이 메모리에 어떤 방식으로 저장되어있는지, 또 어떻게 불러오고 비교하는지에 대해 공부해봤습니다. 그렇다면 문자열을 다른 곳에 복사할 때는 어떤 방법을 써야 하는지 공부해보도록 하겠습니다. 아래와 같이 문자열이 어떻게 복사가 되는지 보기위해 아래와 같이 문자열을 복사해서 첫 문자를 대문자로 바꾸는 코드를 작성해 보겠습니다. #include #include #include int main(void) { string s = get_string("s: "); string t = s; t[0] = toupper(t[0]); printf("s: %s\n", s); printf("t: %s\n", t); } 처음 입력은 emma로 전부 소문자로 입력한뒤 결과를 봤는데 t뿐 아니라 s까지도 대문자..

CS 기초/메모리 2021.08.22

[CS50] 문자열 비교

오늘은 문자열이 두 개일 때 같은 내용을 담고 있는지?, 또 이 두 개가 직접적으로 비교가 가능한지에 대해 공부해보도록 하겠습니다. 지난 포스팅에서 문자열은 각 문자의 배열이고 각 문자는 메모리에 서로 다른 주소 값을 가지고 있다는 것을 공부했습니다. 실제로 확인해보면 #include int main(void) { char *s = "EMMA"; printf("%p\n", &s[0]); printf("%p\n", &s[1]); printf("%p\n", &s[2]); printf("%p\n", &s[3]); } 이렇게 코드를 작성하고 실행했을 때 주소값이 다르게 출력되는 것을 확인할 수 있습니다. ** 여기서 주소값을 보면 첫 번째 문자인 "E"를 시작으로 메모리상에 바로 옆에 저장되어있는 것을 볼 수 ..

CS 기초/메모리 2021.08.21

[CS50] 문자열

지금까지 문자열을 string이라는 자료형을 사용해 저장해왔습니다. 그런데 C에는 string이 실제로 존재하지 않는 자료형이라고 합니다. 그렇다면 문자열이 실제로 메모리상에 어떻게 저장되어있는지, 저장되어있는 문자열에 어떻게 접근해야 하는지 공부해보도록 하겠습니다. 지금까지 배우면서 문자열을 변수에 저장하기 위해 CS50 라이브러리에 있는 string 자료형을 사용해왔습니다. 예전부터 문자열은 문자의 배열이라고 배웠는데 만약 string s = "EMMA"; 라는 코드가 있다면 그림과 같이 s[0], s[1], ... 처럼 하나의 문자가 배열의 한 부분을 차지하고 마지막엔 \0인 null 종단 문자로 문자열의 끝을 나타내 줬습니다. 그렇다면 문자열의 주소는 어떻게 가리키게 될까요?? 위의 변수 s는 이..

CS 기초/메모리 2021.08.20

[CS50] 자료형, 형식 지정자, 연산자

C는 정수형이나 문자열 이외에도 다양한 데이터 타입이 정의되어 있는데 어떠한 타입이 있는지, 또 그것을 다양한 연산자를 통해 조건문이나 반복문으로 설정해 값을 계산하는 방법을 공부해보도록 하겠습니다. 먼저 데이터 타입으로 정의되어 있는 것 - int : 특정 크기 또는 특정 비트까지의 정수 (예) 1, 5, 40, -4, 0 - long : 더 큰 크기의 정수 - float : 부동소수점을 갖는 실수 (예) 3.14, 0.0, -29.34 - double : 부동소수점을 포함한 더 큰 실수 - char : 문자 하나 (예) 'a', 'B', '?' - string : 문자열 - bool : 불리언 (예) true, false, 1, 0, yes, no 그렇다면 왜 다양한 데이터 타입이 필요할까요? 기본적..

CS 기초/C언어 2021.08.01