본문 바로가기

C언어

(3)
Byte order 컴퓨터 메모리에 데이터가 저장될 때 어떻게 저장될까? Byte order는 쉽게 데이터를 저장할 때 낮은주소부터 또는 높은주소부터 저장하는 방식을 말하는데, 크게 리틀엔디안과 빅엔디안 방식이 있다. 한 번 알아보자. 리틀 엔디안 예전에 16진수 두 자리(0x00~0xFF)가 왜 1Byte인지 몰랐는데 나처럼 헷갈리는 사람이 있을 것 같아 먼저 설명하겠다. 2진수 4자리로 표현할 수 있는 개수는 2의 4승이므로 총 16개다. 2진수 한 자리당 1bit이므로, 0000~1111은 16가지를 표현할 수 있다는 뜻이다. 16진수 1자리로 표현 할 수 있는 개수는 16개다. 즉, 16진수 1자리(0x0 ~ 0xF)는 4bits라는 뜻이므로 16진수 2자리(0x00~0xFF)는 1byte이다. 이걸 설명한 이유는 ..
함수 포인터 함수포인터란? 함수를 저장하는 포인터, 함수 포인터를 주고받거나 함수 포인터로 함수를 호출할 수 있다. 용도 1. 함수를 배열이나 구조체에 넣을 수 있다. 2. 함수자체를 함수의 매개 변수로 넘겨주고, 반환 값으로 가져올 수 있다. 저장될 함수의 반환 값 자료형 (*함수포인터이름)(매개변수); 함수이름은 함수의 메모리 주소이므로 함수 포인터에 저장할려면 함수 포인터 이름 = 저장할 함수 이름 수포인터란? 함수를 저장하는 포인터, 함수 포인터를 주고받거나 함수 포인터로 함수를 호출할 수 있다. 용도 1. 함수를 배열이나 구조체에 넣을 수 있다. 2. 함수자체를 함수의 매개 변수로 넘겨주고, 반환 값으로 가져올 수 있다. 함수 포인터를 응용하면 함수를 고정된 형태가 아닌 데이터 형태로 취급할 수 있습니다. ..
크기가 명시된 정수 자료형 모든 컴퓨터에서 int는 4byte의 정수형 변수일까? 아니다 CPU의 비트 수에 따라서 int의 크기는 달라질 수 있다. 이런 문제를 해결하기 위해 stdint.h 헤더파일을 이용해서 int자료형의 크기를 명시해줄 수 있다. int8_t는 8bit의 부호가 있는 정수자료형을 뜻한다. 앞에 u가 붙게 되면 unsigned를 의미하며 부호가 없다(자연수)는 뜻이다. - ex) uint8_t 8대신에 16, 32, 64를 넣어서 비트 수를 바꿀 수 있다.