카테고리 없음

흥달쌤 깨알 C언어 정리 4강, 5강, 6강

녕지 2022. 4. 3. 22:30

제 4강 변수의 종류와 유효범위

1) 지역변수

- 함수/블록 안에서 선언하는 변수

- 함수/블록의 종료와 함께 메모리상에서 소멸

- 초기값이 없으면 쓰레기 값이 들어감

- 스택 영역에 저장됨

 

void main(){ // 메인 블럭
	if(1){
    	int num1 = 10; // 지역 변수 선언
        printf("%d", num1); // 10 출력
   	} // num1 사라짐
    printf("%d", num1); // num1 없으니 오류
}

2) 전역변수

- 함수 블록 밖에서 선언하며 전체 함수에 영향을 미친다

- 프로그램이 종료될 때 메모리상에서 소멸

- 초기값이 없으면 0값이 들어감

- 데이터 영역에 저장됨

int num1; // 전역변수 num1 선언
void main(){
	num1 = 10;
    printf("%d", num1); // 10 출력
    func();
    printf("%d", num1); // 20 출력
} // 10 20
void func(){
	num1 = 20;
}

3) 정적변수

- static으로 선언하며 선언된 블록 내에서만 사용가능

- 함수가 종료되어도 소멸되지 않고, 값이 그대로 유지됨

- 프로그램이 종료될 때 메모리상에서 소멸

- 초기값이 없으면 0이 입력되고, 단 한번만 초기화

- 데이터 영역에 저장됨

void main(){
	add(10); // sum: 10
    add(5); // sum: 15 <- static으로 10이 저장되어 있기 때문에 거기에 i값을 더해 준다
    add(3); // sum: 18 <- 15 + 3
}
int add(int i){
	static int sum = 0;
    sum = sum + i;
    printf("sum: %d\n", sum);
}

4) 동적변수

- 메모리 동적할당으로 생성되는 변수

- Run time 시간에 메모리를 할당

- 동적 기억장소에 할당하여 메모리 낭비를 피하려는 목적

- 무조건 포인터를 사용해야 함

- 힙 영역에 저장됨


제 5강 산술연산자

1. 산술연산자 종류

1) 이항 연산자

+, -, *, /, %

2) 단항 연산자

++, --

전위 연산자/후위 연산자

3) 대입 연산자

=, +=, -=, *= /= %=

 

[문1] 3 / 4

[답1] 0

[문2] a = 10; b = a++; c = ++a;

[답2] a: 12, b: 10, c: 12

[문3] a = 10; a+= 10;

[답3] a: 20


제 6강 연산자 우선순위

1) 산술연산자 종류

1. ()

2. ++, --, ~, !

3. +, -

4. <<, >>

5. <. <=, >, >=

6. ==, !=

7. &, ^, |

8. &&, ||

9. =, +=, -=, *= /= %=