main.c compile .obj link .exe
memory main.c main.o main.exe
code area 0 and 1
local area stack 1MB(auto) (지역 변수)
global area data segment 8MB (전역 변수) function string initialization static -> ROM Direct Memory Access RAM
heap dynamic 4GB pointer
파일-새로 만들기
char 1byte signed char -128~127 unsigned char 0~255
int 2byte
float 4byte
정규화 부호 가수 지수
1100.1=1.1001*2^3
bias 지수 3+127(bias)=130
양수 0 음수 1
little endian int a=0x12345678
low A 78 56 34 12 high A(하위 데이터가 하위 어드레스에 입력하는 방식)
(상위 데이터가 상위 어드레스에 입력하는 방식)
(1byte 역순)
&a 주소번지
부동형 float double
6=0110=1.1*2^2=0100 0000 1100 0000=40c0
열거형 enum sun {a,b=10,c,d=30}; a=0;
arithmethc operators 16%5=1
홀수 짝수 마지막 비트 확인 (cnt&0x1)==0 (cnt&0x1)!=1
*a[]; **a; *a[10];
fp 함수 포인터
int add(int a,int b){return a+b;}
int (*fp)(int,int);
fp=add;
a=10;
b=++a; a증가후 b 더함
c=a++; a저장후 c 더함
%s,%d,%c,%f string"" 문자열 마지막 문자에 \0 입력 char'' 문자
2진수8진수16진수
01101101 10진수 109 16진수 6D 8진수 155
Bitwise operators x&y and x|y inclusive x^y exclusive ~x not ~y not
Logical operators && || !
Relational operators
Conditional operators a=(b<c)?20:10;
alt+F8 들여쓰기
ch^32 ch^(0x20) ch^(1<<5) 대문자 소문자 변환
function
개행 puts("");
do while
array int a[3]; a+sizeof(int)*1
*주소:값 &:주소 *(&a)->a의 값
call by value
call by address
single pointer int &p double pointer 포인터 배열 int *p[3]; int* p; int *p; int *(p+1); int *(p+2); 배열의 이름만 명시한다.
a[0] *a p[0] *p 0[a] *(a+0) 0[p] *(p+0) *(0+a) *(0+p)
sizeof(a)/sizeof(a[0])
storage class
전역 변수에 쓴 경우
int a;(임시 정의) 0으로 자동으로 초기화
int a=10;(정의)
extern int a;(선언) extern 생략 못함
extern int a=10;(정의)
static 변수 한번만 초기화 정적 변수
auto 변수
register
struct 구조체 정의,구조체의 크기
union 메모리 공유
file
heap
preprocessing directives 전처리기 지시어
.c preprocessing .i compile .o assemble .s linker .exe
#ifdef #if defined
#ifndef #if !defined
#if #endif
data structure
single linked list double linked list,array,stack(LIFO),Queue(FIFO,Moving Queue,환형 Queue)
자기 참조 구조체 포인터를 써야 함
tree(binary,multiway)
full binay tree,complete binary tree(heap),skewed tree
quick sort,graph
최대공약수,곱하기,유클리드 개선(%Mod 사용),recursion(재귀호출),fibonacci series,stack overflow(재귀호출의 한계)
파일형 포인터(FILE *fp;fp=fopen("a.txt","w");,파이프 라인
dynamic allocation(malloc->memory allocation,calloc->clear allocation,realloc->resize allocation,free)
int a; int *p; p=&a;
int *p; p=malloc(sizeof(int));
int a[2][3]; int (*p)[3]; p=a;
int (*p)[2]; p=malloc(sizeof(int)*6);
요철배열
volatile 휘발성의
함수 성능 저하
memcopy
(?+3)&~3; size+=3; size &=~3;
unswitching,루프 내 작업 최소화(체인제거)
댓글