C언어 (20) 파일 입출력 프로그램은 파일을 통해 데이터를 받거나 쓰는 경우가 많다. 이런 동작을 C언어로 해보자. 스트림(stream) 스트림(stream)이란 데이터를 입력하고 출력하기 위한 다리 같은 역할이다. 키보드, 모니터 같은 입출력 장치들은 다양한 방식으로 데이터를 주고받는다. 이 키보드와 프로그램, 프로그래뫄 모니터를 이어 ...
C언어 (19) 문자열 이용하기
C언어 (19) 문자열 이용하기 지난번에 문자열의 입출력 함수에 대해 자세히 알아봤다. 이제 문자열을 처리하는 함수와 포인터로 문자열을 사용해보자. 문자열 처리 함수 문자열을 프로그램에서 사용하다보면 문자열을 붙이거나, 길이를 구하거나, 비교하는 작업이 필요하다. 직접 함수로 작성해도 되지만 C에서는 이런 역할을 하는 여러 함수를 라이브러리로...
C언어 (18) 문자열
C언어 (18) 문자열 C언어에서의 문자열은 상당히 복잡하고 신경 쓸 것이 많다. 그래서 python을 먼저 배우고 C언어를 배울 때 제일 헷갈려하는게 이 문자열 부분인 것 같다. 또 python이나 C++ string STL을 사용하면 문자열 다루기가 굉장히 편하다. 그럼에도 C언어로 문자열을 사용해야 하는 일이 있을 수도 있고, 여러 함...
C언어 (17) 구조체와 공용체3
C언어 (17) 구조체와 공용체3 함수에 구조체를 이용하는 방법과 공용체, 열거형을 보자 . 구조체와 함수 구조체를 함수로 사용하는 경우는 두 가지가 있다. 구조체를 함수의 인자로 전달하기 구조체를 함수의 반환형으로 전달하기 인자로 사용할 때도 값으로 전달하는 방법과 주소로 전달하는 방법이 있다. #include <stdio...
C언어 (16) 구조체와 공용체2
C언어 (16) 구조체와 공용체2 구조체에서 배열과 포인터를 어떻게 쓰는지 자세히 보자. 구조체의 메모리 저장 방법 구조체가 메모리에 저장되는 방식은 그림과 같다. 각각의 멤버 변수는 시작 주소부터 연속되어 저장을 한다. 크기는 구조체의 멤버 중 가장 큰 멤버의 자료형에 영향을 받는다. 예시로 확인을 해보자. typedef s...
C언어 (15) 구조체와 공용체
C언어 (15) 구조체와 공용체 새로운 자료 구조인 구조체와 공용체, 열거형까지 알아보자. 구조체 배열이 타입이 같은 데이터를 하나로 묶는다면 구조체는 타입이 다른 데이터도 묶을 수 있다. 학생의 정보를 저장한다고 할 때 이름, 나이, 점수를 하나로 묶어 저장할 수 있으면 편할 것이다. 이런 여러개의 변수를 그룹화하여 새로운 자료형으로 만...
C언어 (14-2) 함수와 포인터 ex
C언어 (14-2) 함수와 포인터 ex 책에는 있는데 알면 좋고 중요한 것도 맞긴 한데 이해하기 어렵기도 하고 C언어를 배우는 과정에서 꼭 알아야하는 건 아닌 것 같아서 간단히 정리만 했다. main() 함수에 인자를 넣을 수 있다? 여태까지 본 main() 함수는 인자가 없는 main(void) 형태였다. 그런데 다른 형태의 main()함수...
함수는 어떻게 저장되는가?
함수는 어떻게 저장되는가? 함수 포인터를 알아보다 작은 궁금증이 생겨서 찾아보고 정리해봤다. 다시 생각하보니 간단한 것이었는데 알아보면서 재밌었으니까~ 함수는 어떻게 메모리에 저장되는가? 함수의 포인터는 함수의 원형과 거의 비슷하게 생겼다. int (*pointer) (int, int) 변수의 포인터는 int*, double* 등으로 참조하...
C언어 (14) 함수와 포인터
C언어 (14) 함수와 포인터 여태까지 배운 것을 합쳐서 함수에서 어떻게 포인터를 활용하는지 알아보자. call by value vs call by reference 값에 의한 호출(call by value)은 변수의 값을 복사해서 함수를 호출하는 방식이다. #include <stdio.h> int func(int n); int m...
C언어 (13) 함수2
C언어 (13) 함수2 함수의 선언 방법을 알아보았고, 어떻게 사용하는지 좀 더 알아보자. 또 변수의 선언 위치에 따른 차이점과 종류를 알아보자. 변수의 종류와 범위 변수는 선언되는 위치나 종류에 따라 메모리 상에 존재하는 기간이 다르다. 지역 변수 전역 변수 정적 변수 외부 변수 레지스터 변수 이렇게 5가지로 나눌 수...