코드네임 :

C혼공 9일차 - 변수 사용 영역 본문

⚙️Computer System/C

C혼공 9일차 - 변수 사용 영역

비엔 Vien 2024. 2. 2. 20:20

지역 변수 : 해당 함수나 블록 내에서만 쓸 수 있는 변수

전역 변수 : 전체 함수 안에서 쓸 수 있는 변수

 

코드블럭(해당 함수)내에 전역변수와 같은 이름의 지역변수를 선언하면 거기서는 전역변수를 사용할수 업따@@!!

 

자동 지역변수 (auto 사용, 생략 가능) : 해당 함수가 '호출'될 때마다 생성됨.(즉 호출될때마다 초기화된 값으로 나옴)

정적 지역변수 (static 사용) : 해당 함수가 '호출'될때, 저장된 마지막 값으로 나옴

(393p) ⬆️

 

레지스터 변수

- 전역변수는 안됨

- 주소 구하기 불가

 

 

값을 복사해서 전달하기 (400p)
main 함수의  a를 다른 함수에 복사해주면 해당 매개변수의 메모리공간이 새로 잡히면서 변수 a값을 전달 (401p)

 

 

402p 코드

 

데이터 공유 방식

값 복사 전달 : 원본 수정 X

주소를 전달 : 원본 수정 O

 

 

405p - 일반 지역변수의 주소를 반환하면 안됨 -함수가 반환되면 저장공간이 회수되어 언제 다른 용도로 재활용될지 알수 없음

(정적 지역변수는 가능 - 함수가 반환된 후에도 저장공간이 계속 유지되므로 호출한 함수에서 포인터 연산을 통해 언제든지 그 변수를 이용 가능)

 

오... 408p 첫번째 함수에서 깨달았는데

매개변수가 포인터라면

scanf때 &쓰지 않음@!!! 왜냐면 그 자체가 주소니깐