Programming(25)
-
C 언어 | 문자열의 복사
학습 목표문자열을 복사할 수 있다. 문자열의 복사문자열을 복사하는 코드를 만들어보자. #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);} 사용자에게 입력값 s("emma")를 받고, t에 복사 후 첫 문자를 대문자로 바꾸는 프로그램을 만들고자 했다. 하지만 계획과 다르게 toupper()함수가 s와 t 모두에 영향을 주어 "Emma"가 출력되었다.* toupper() 함수를 사용하기 위해 ctype 라이브러리를 추가했다. 이유는 다음과 같다.cs5..
2021.02.20 -
C 언어 | 문자열의 비교
학습 목표문자열이 저장되어 있는 방식에 근거해서 문자열을 비교하는 방법에 대해 설명할 수 있다. 문자열의 출력문자열의 주소를 출력하는 예시를 다시 보자. #include int main(void){ char *s = "EMMA"; printf("%p\n",s);} 앞선 강의에서 문자열의 주소는 s라는 포인터의 값, 즉 문자열의 가장 첫 값인 s[0]의 메모리 주소를 출력한다 배웠다. 그렇다면 아래 코드가 무엇을 출력하는지 보자.printf("%p\n", &s[0]);printf("%p\n", &s[1]);printf("%p\n", &s[2]);printf("%p\n", &s[3]); 위의 예제에 코드를 추가(8-11)한 모습이다. 명령 프롬프트로 부터 알 수 있는 것은 다음과 같다. &s[0]..
2021.02.20 -
C 언어 | 문자열과 포인터
이제껏 문자열을 저장하기 위해 CS50 라이브러리에 포함된 string 자료형을 사용했다. 하지만 이는 실제 C에서는 존재하지 않는 자료형이다. 학습 목표문자열 형태의 새로운 자료형인 string이 어떻게 정의되었는지 설명할 수 있다. 문자열과 포인터변수 s에 "EMMA"라는 값을 저장하는 프로그램을 예로 들어보자.#include #include int main(void){ string s = "EMMA"; printf("%s\n",s);} cs50 라이브러리를 사용해, 즉 string 타입을 사용해 값을 출력한 모습이다. 프로그램을 설명하자면 다음과 같다."EMMA"는 문자의 배열이고 s[0]=E, s[1]=M과 같이 하나씩 표현될 수 있다.문자의 마지막인 s[4]는 \0로, 0으로 이루..
2021.02.19 -
C 언어 | 포인터
학습 목표포인터 변수를 정의하고 사용할 수 있다. 포인터C에서는 포인터 개념을 통해 변수의 주소를 쉽게 저장하고 접근할 수 있게 한다. 지난 글에서 배운 '*'연산자를 사용해서 프로그램을 만들어보자. #include int main(void){ int n = 50; int *p = &n; printf("%p\n", p); printf("%i\n", *p);} 위 프로그램을 보면 *p라는 변수에는 &n값, 즉 변수 n의 주소를 저장한다.int *p에서 *는 이 변수가 포인터임을, int는 이 포인터가 int 타입의 변수임을 가리킨다.첫 번째 출력 값을 보면 p는 형식 지정자 %p를 사용해 변수 n의 주소를 출력한다(= 포인터 p의 값).두 번째 출력 값을 보면 *p는 형식 지정자 %i..
2021.02.19 -
C 언어 | 메모리 주소
학습 목표 16 진법을 읽고 쓸 수 있다. 메모리 주소에 접근하고 값을 받아오는 코드를 C로 작성할 수 있다. 16진수 컴퓨터 과학에서는 숫자를 10진수나 2진수 대신 16진수(Hexadecimal)로 표현하는 경우가 많다. 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 유용하다. 16진수를 표현할 때는 앞에 '0x'를 붙인다. 16진수는 10에서 15까지를 a에서 f로 대입해서 사용한다(대소문자는 구별하지 않는다). 15는 0xf, 16은 0x10인 식이다. 메모리 주소 정수형 변수 n에 50이라는 값을 저장하고 메모리상의 주소를 출력하는 프로그램을 만들어보자. '&'는 메모리상의 주소를 받기 위한 연산자이다. * 자료형 int는 메모리에서 4바이트 만큼의 자리를 차지한다. #..
2021.02.19