반도체, 임베디드 Study/C

C - 헷갈리는 개념 정리

잇(IT) 2024. 4. 17. 11:48
728x90

변수, 문자열 차이

 

C언어에서 문자열은 배열로 선언되었을 때 이미 메모리 주소를 가지고 있다. 이는 배열 이름 자체가 해당 배열의 첫번째 요소를 가리키는 포인터로 해석되기 대문이다. 때문에 문자열 입력 시 &를 문자열 변수에 붙이지 않는다.

 

반면에 변수는 메모리 주소가 아니라 값 그 자체를 의미하므로 입력을 받을 때 &를 붙여 해당 변수의 주소값을 전달해야 한다. 


지역변수, 전역변수

 

지역 변수는 함수 내에서만 생성되고, 전역 변수는 프로그램이 처음 실행되면 메모리 공간에 할당되어서 프로그램이 종료될 때까지 메모리 공간에 남아있는 변수다.

 

함수 내에 static을 사용할 수 있는데 이는 지역변수의 특징과 전역변수의 특징을 함께 가지고 있다.

함수 내에 static을 붙이게 되면

1. 선언된 함수 내에서만 접근이 가능하다. (지역변수 특성)

2. 딱 1회 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다. (전역변수 특성)

728x90

'반도체, 임베디드 Study > C' 카테고리의 다른 글

C - 포인터  (0) 2024.05.13
C - 포인터, 이중포인터 Call-by-Value, Call-by-Reference  (0) 2023.03.28