C언어
[홍정모의 따라하며 배우는 C언어] 포인터형 매개변수
함수의 매개변수는 값을 복사해서 사용하는 것이다 그렇기 때문에 함수 내부에서 값을 바꿔도 변하지 않으며, 주소값을 찍어봐도 당연히 호출한 부분의 주소값과는 다르다. 이것을 call by value 라고도 한다. 매개변수에 주소값 즉 포인터 변수를 넣게되면 주소값이 가리키는 값이 바뀌게 된다. 이것은 값을 복사해서 사용하는 것이 아니라 직접 주소값을 바꾸는 것이므로 메모리 비용이 덜 들어간다. 이것을 call by pointer 라고 한다.
[홍정모의 따라하며 배우는 C언어] 포인터 변수의 크기
포인터의 크기는 고정되어있다 왜 이런 결과가 나오는가? 동네가 크던 작던 우편번호 크기는 동일하다 포인터의 크기는 일반적으로 cpu에 따라 결정되며, 32비트 CPU에서는 4바이트 64비트 CPU에서는 8바이트 크기를 가진다. CPU의 1워드의 크기이며, 워드란 CPU가 한번에 처리할 수 있는 데이터의 크기이다. 64바이트의 경우 포인터의 크기는 8이 나오는 것을 확인할 수 있다
[홍정모의 따라하며 배우는 C언어] 포인터의 작동원리
* : 변수 앞에 쓰이며, 포인터 변수임을 의미한다. & : 변수에 대입하는 값을 주소값으로 변경할 때 사용한다. *는 간접접근(inderection), 역참조(dereferencing), 방향 재지정(redirection)이라고도 부른다 printf로 *a_ptr을 출력해보면, 주소값이 가르기는 값을 출력해준다
[홍정모의 따라하며 배우는 C언어] 문자열이 메모리에 저장되는 구조
문자열의 끝이 어딘지를 표현하기위해 메모리공간을 하나 더 사용한다 문자열 길이는 자동으로 +1이 된다 \0 뒤의 메모리는 무시해준다 printf로 확인해보면, \0 뒤의 문자는 보이지 않는다 \0는 널문자열 이라고 부른다 메모리에 저장될 때 해당 문자열의 끝이 어디인지 모르기때문에 널문자열이 필요한 것이다
[홍정모의 따라하며 배우는 C언어] C언어 특징
C언어의 장점 프로그램의 효율성을 높일 수 있다 강력하면서도 유연하다 프로그래머 중심이다 (프로그래머에게 많은 권한/책임을 준다) 다른 시스템으로 이식하기 좋다 (윈도우에서 C언어로 만들었어도 리눅스에서 실행해도 이식하기 좋다) 작은 하드웨어에서 프로그래밍할 때 유용 C언어의 단점 주의를 기울여야 한다 C언어가 쓰이는 곳 Unix 운영체제 게임 임베디드 시스템 자동화 공장 컴파일러와 링커 [컴파일러] 소스코드를 하나의 오브젝트 코드로 변경해준다 [링커] 여러 오브젝트 코드를 하나로 모아준다 라이브러리를 사용할 경우 해당 라이브러리와 연결을 시켜준다 추천 책