Data Unit
1 bit : 0 or 1 (2가지 수 표현)
1 byte = 8 bit (2의 8제곱 = 256가지 수 표현)
1 byte in 2진수
범위 : 00000000~11111111 (0~255)
ex) 1byte : 01001111 (10진수로 79)
1 byte in 16진수 (0x-)
범위 : 0x00~0xFF (0~255)
ex) 1byte : 0x4F (2진수로 01001111, 10진수로 79)
Data Types
char : 1byte
short : 2byte
int : 4byte (–2,147,483,648 ~ 2,147,483,647)
float : 4byte
double : 8byte
long long : 8byte
size_t : unsigned 정수 (시스템에 따라 4byte, 8byte, …)
SWAP script
#define SWAP(x, y) do { typeof(x) SWAP = x; x = y; y = SWAP; } while (0)
Const Keyword
변수 앞에 올 경우 : 상수로 만든다.
const int number = 10;
number = 20; // ERROR
포인터 앞에 올 경우 : 포인터가 가리키는 값을 상수로 만든다.
const int* number;
number = &count;
*number = 20; // ERROR
포인터 뒤에 올 경우 : 포인터의 주소값을 상수로 만든다,
int* const number = &count;
number = &result; // ERROR
*number = 20;
int sprintf(char *str, const char *format, …)
printf와 동일한 방법으로 str에 문자열을 넣는다.
int to string 할 때 편리함
마지막에 들어갈 NULL문자를 위한 공간이 있어야 함
성공시 마지막에 들어가는 NULL 문자를 제외한 문자의 개수 반환, 실패시 음수 반환
// Integer to String
char str[50];
int num = 123;
sprintf(str, “%d”, num);
char str[50];
int num = 123;
sprintf(str, “%d”, num);
Function pointer
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int (*fp)(int, int);
fp = add;
printf("%d\n", fp(1, 2));
fp = &add;
printf("%d\n", fp(1, 2));
return 0;
}