프로그래밍 13

EOF(End Of File)

EOF는 End Of File의 약자로 -1로 정의되어있다. 파일의 끝을 탐지하는 방법은 운영체제마다 다르지만, C언어에서는 EOF를 통해서 파일의 끝을 탐지하고 키보드를 통한 입력의 끝도 알려준다. 함수 호출시 에러가 있는지 없는지에 대한 반환값을 검사할 때 주로 사용되고 이는 신뢰성있는 코드를 작성하는데 도움을 준다. 키보드를 대상으로 하는 getchar나 scanf같은 함수들은 두가지 경우에 EOF를 반환한다. 1) 함수 호출을 실패할때 2) 유닉스는 Ctrl + D, 윈도우는 Ctrl + Z를 통해서 EOF를 발생시킬때 키보드의 입력에서 엔터도 결국은 문자라서 끝을 알려줄 방법이 없다. 때문에 위와같은 특정 키를 입력해서 EOF를 발생시킨다. 외외로 평소에 반환 값이 있는지 몰랐던 함수들이 꽤 있..

프로그래밍/C 2022.03.31

함수 호출 방식

함수를 호출하는 형태에 따라서 Call-by-reference와 Call-by-value를 구분한다. 일반적으로 함수에 인자를 넘겨줄 때, 단순히 그 값이 복사되어 전달이 이루어지는 형태가 Call-by-value이다. 때문에 여기서 pp에게 a를 인자로 넘겨줄때, 값만 a에서 매개변수 n으로 복사가 되기 때문에, 결과적으로는 변수 a의 값이 변하지 않는다. 반면 Call-by-reference는 메모리 접근에 이용되는 주소 값을 전달하는 형태이다. 이렇게 수정하면, pp 함수가 직접 메모리에 접근해서 a의 값을 증가시킬 수 있다. 이러한 이유 때문에 scanf도 &연산자를 사용하여 값을 저장시킨다.

프로그래밍/C 2022.03.29

C 배열 접근

문제를 풀다가 모르는 부분을 발견했다. 검색을 해도 안나와서 영어로 끄적거렸더니 확실한 답을 찾을 수 있었다. 배열을 []를 통해서 접근하는 것과 주소 그 자체로 접근하는 것의 차이를 잘 모르고 있었다. 배열 그 자체는 주소를 가리키고, []는 *처럼 그 주소가 가리키는 값을 가리킨다. https://www.programiz.com/c-programming/examples/access-array-pointer C Program to Access Array Elements Using Pointer www.programiz.com data[0] is equivalent to *data and &data[0] is equivalent to data data[1] is equivalent to *(data + ..

프로그래밍/C 2022.03.25