MW LAB

C 기초 정리 본문

Study/C

C 기초 정리

MWP 2017. 1. 17. 16:10

# 서식문자

16진수 : %#x / 8진수 : &#o

필드폭 지정 : %8d(필드폭 8칸 확보, 오른쪽 정렬), %-8d(오른쪽 정렬)

float, double, long double 데이터 출력 : %f, %f, %Lf

float, double, long double 데이터 입력 : %f, %lf, %Lf



#상수 (리터럴 상수/ 심볼릭 상수)

상수 : 변경이 불가능한 데이터 (선언과 동시에 초기화)

리터럴 상수 : int num = 30+40; // 메모리상에 상수의 형태로 30 , 40 저장된후 덧셈, 70 이 num 에 저장

심볼릭 상수 : const int MAX = 100; // 선언과 동시에 초기화 해야함 아니면 쓰레기값 저장됨



 

# 함수에서 return 2가지 의미

함수의 반환 값이 void => 함수를 빠져나간다.

함수의 반환 값이 존재 => 변수를 반환한다.


# 재귀함수


# 변수의 존재기간과 접근범위

지역변수(Local Variable) : 함수 내에만 존재 및 접근 가능, 함수 호출시 생성/ 함수 종료시 소멸 (매개변수 포함)

전역변수 : 프로그램 시작시 생성 및 메모리 할당/ 종료시 소멸 / 초기화 없을시 0으로 초기화됨 / 프로그램 전체에서 접근 가능

static 변수(함수의 지역변수에 static 선언) : 선언된 함수 내에서만 접근 가능/ 1회 초기화 되고 프로그램 종료 시까지 메모리 공간에 존재

register 변수 : CPU 내의 레지스터에 저장될 확률을 높임

 

# 문자열 / 문자열 배열

문자열의 끝에는 ‘null 문자’ = ‘\0’ = 아스키코드 ‘0’ 이 붙는다.

%s : 문자열 입력 서식문자

char str[50] = “hello” 로 선언하면 자동으로 뒤에 null 문자 삽입됨

char str[] = {‘h’,‘i’} 는 문자열 배열

 

# scanf 데이터 구분짓는 기준 = 공백

 

# 포인터 변수(int)의 크기

4바이트(32비트) 시스템에선 4byte

8바이트(64비트) 시스템에선 8byte

 

# 포인터 형의 존재 이유 (메모리 공간을 참조하는 기준)

포인터의 타입에 따라

int => 저장된 주소를 기준 4바이트를 읽어들인다.

double => 저장된 주소를 기준 8바이트를 읽어들인다.

예제) int *ptr 선언시 ptr+14바이트 뒤의 메모리 참조

double * ptr 선언시 ptr+18바이트 뒤의 메모리 참조

int arr[3] 선언시 arr+14바이트 뒤의 메모리 참조

 

# 연산자(*,&)

* => 포인터가 가리키는 메모리르 참조하는 연산자

& => 변수의 주소값을 반환하는 연산자

 

# 배열-포인터

배열의 이름은 포인터(상수 형태의 포인터[주소값 변경 불가])

arr[i] == *(arr+i)

 

# NULL 포인터

int *ptr = 125; // 메모리 주소 125에 저장된 값이 무엇인지 모르기 때문에 오류 가능성!

int *ptr = 0;

int *ptr = NULL;


# 상수 형태의 문자열을 가리키는 포인터


# 큰따옴표로 묶여서 표현되는 문자열은 주소값을 반환

char * ptr =“hi”; printf(ptr);

 

# 함수의 인자로 배열 전달

배열의 포인터와 길이를 전달

 

Comments