fseek(대상 파일 스트림, 이동할 바이트 수, 시작지점)
바이트 단위로 프롬프트를 이동하고 동작 성공시 0, 실패시 -1을 반환
시작지점은 SEEK_SET(시작지점), SEEK_CUR(현재 지점), SEEK END(끝 지점)으로 설정할 수 있다.

ftell(대상 파일 스트림) - 현재 파일 지시자의 위치를 알려준다.
ftell(스트림,0,SEEK_END)로 스트림이 대상으로 하는 파일의 크기를 알 수 있다.
feof(대상 파일 스트림) - 파일 지시자가 EOF에 도달했는지 검사
EOF에 도달한 경우 0이 아닌 값을 반환
매크로
매크로는 단순 치환을 통해 함수 매크로 일 경우 자료형에 따라 별도 함수를 재선언 할 필요 없고
일반 함수 호출에 비해 속도가 빠르다는 것이 장점이다. 단점은 전처리기이기 때문에 오류가 발생하지 않고
컴파일 단계에서 오류가 뜨기 때문에 디버깅이 까다롭다. 아래는 매크로는 단순치환이라는 것을 보여주는 예이다.
#define MUL(X) (X*X)
MUL(2+2) // 8
//단순 치환하기 때문에 2+2*2+2가 된다.
#define MUL(X) ((X)*(X))
MUL(2+2) // 16
//(2+2)*(2+2) 괄호를 넣어주면 의도대로 된다.
조건부 컴파일
#if 조건
#elif 조건
#else
#endif
#ifdef 전처리기 정의 여부
#elif 전처리기 정의 여부
#else
#endif
#ifndef 전처리기 정의 여부
#elif 전처리기 정의 여부
#else
#endif
ifndef는 헤더파일의 중복을 방지하기 위해 정의되지 않았을 때만 정의하는데
C++에서는 대신 #pragma once라는 전처리기를 이용해 중복을 방지한다.
레퍼런스 - 별명
주소값을 직접참조 (포인터는 간접 참조) 하여 포인터처럼 사용할 수 있도록 제공되는 자료형
레퍼런스는 자체적인 용량을 가지고 있지 않고 사용시점에 참조할 대상을 반드시 지정해줘야 함 (별명이니까)
포인터의 크기는 운영체제에 따라 32비트면 4바이트, 64비트면 8바이트지만 레퍼런스는 본인이 할당하는
공간이 없기 때문에 레퍼런스의 크기를 sizeof로 재면 대상체의 자료형의 크기가 반환된다.
그리고 대상을 한번 지정하고 나면 참조하는 대상을 바꿀 수 없다. 상수 포인터처럼.
레퍼런스의 대상체는 좌변값이어야 하며 const 레퍼런스는 우변 값도 대상체로 지정 가능하지만 읽기 전용이다.
힙 메모리는 포인터를 이용해서만 접근이 가능하기 때문에 레퍼런스로는 힙 메모리에 접근할 수 없다.
'Today I Learned' 카테고리의 다른 글
| 23.02.13 - 이니셜라이저, const 함수 (0) | 2023.02.13 |
|---|---|
| 23.02.06 ~ 23.02.10 - 객체, 생성자, explicit, 전방선언 (0) | 2023.02.13 |
| 23.02.01 - 스트림, 콘솔 입출력, 파일 입출력 (0) | 2023.02.01 |
| 23.01.31 - new, delete, 메모리 관리 함수 (0) | 2023.01.31 |
| 23.01.30 - 공용체, 동적 할당 (0) | 2023.01.30 |