본문 바로가기
DVB

C 언어 강의

by hasd 2011. 7. 15.



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,루프 내 작업 최소화(체인제거)



댓글