소프트웨어 개발/Algorithm

C언어에서 헷갈렸던 것들 짚고 넘어가기

Leo's notes 2019. 2. 19. 20:12

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); 


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;
}