이 게시물을 보는 분들이 C언어에 대해 공부하신다면 이해하시는 데 조금이라도 도움이 되었으면 좋겠습니다.
C 프로그래밍 언어는 개인적으로 많이 어렵다고 느꼈기 때문에 많은 구글링과 공부가 필요하다고 생각합니다.
저도 혼자 스스로 공부하고 시간을 투자하고 만든 PPT 입니다.
* 제가 만든 PPT를 동의없이 무단으로 사용하실 경우 민형사상의 처벌을 묻습니다.
* 추가적 개념 및 공부
1. 변수의 종류
정수형 수 (char, unsigned char, signed char, short, unsigned short, unsigned short, int, unsigned int, long long, unsigned long long) 와 실수형 변수 (float, double, long double)
2. 상수의 종류
리터럴상수 즉 1,3,a,w,r... 변하지 않는 데이터 -> 상수는 일반적으로 대문자를 이용한다.
상수를 선언하는 방법 : const int num = 10;
3. scanf에서 %f와 %lf 구분해서 사용해야 하는 이유는 scanf는 입력을 받아야 하니까 모든 파라미터를 포인터로 받게 됩니다. 포인터는 그 주소값 4바이트만 전달될 뿐 해당 포인터가 가리키는 자료형이 무엇인가는 전달되지 않습니다. 그렇기 때문에 float와 double을 f와 lf로 구분해줘야 합니다. printf는 포인터가 아닌 값을 받기 때문에 파라미터 리스트에서 각각의 데이터 크기를 알 수 있습니다. 포맷 문자가 f 이고 파라미터 크기가 4면 float로 처리하고 포맷 문자가 f 이고 파라미터 크기가 8이면 double로 처리하게 됩니다. 그렇기 때문에 printf는 %f 로 사용합니다.
+ 포인터에 대해서, 포인터는 "주소"입니다. int와 char와 같은 변수입니다.
포인터 변수도 같은 말입니다. 변수라면 어떤 값을 저장하는 값인데, 포인터는 변수의 주소값을 저장합니다.
4. 지역변수란 한 지역내에서만 사용 할 수 있는 변수입니다. 여기서 지역이라는 것이 중괄호에 의해 만들어지는 영역을 뜻하며 우리가 사용했던 main 함수 내의 변수들도 다 지역변수 입니다. 따라서 main 함수에서 사용하던 변수를 다른 함수에서도 쓰려면 인자값으로 넘겨주거나, 전연변수로 선언한 후 사용해야 합니다. 여기서 전역변수는 지역변수와 반대로 어느 지역에서나 사용할 수 있는 변수입니다. 괄호 안에 쓴 변수가 지역변수라면 괄호 밖에 쓴 변수를 전역변수입니다. 전역변수로 선언하면 main함수는 변수 사용이 가능합니다. 이 전역변수는 프로그램의 시작과 동시에 메모리 공간이 할당되어 프로그램이 존재할때까지 존재합니다. 또한 지역변수와는 다르게 별도의 값으로 초기화하지 않으면 0으로 초기화됩니다. 그렇다면 지역변수와 전역변수 중에 어디에서나 사용할 수있는 전역변수를 사용하는 것이 더 좋지 않을까싶겠지만, 오히려 지역변수를 사용하는 것이 좋습니다. 코드가 점점 길어지고 복잡해질수록 함수도 늘어나게 됩니다. 그렇게 될 때 전역변수를 사용하게 되면 어떤 함수에서 전역변수의 값을 바꾸는지 알기 어려워집니다. 알기 어려워진다. -> 유지보수하기 어려워진다.
5. 매크로상수 define 매크로란? 여러개의 명령문을 하나의 명령어로 간단하게 묶어 사용할 수 있도록 하는 기능이다.
C언어의 define은 매크로를 만드는 전처리기 명령어로 여러개의 명령문을 하나의 명령어로 간단하게 묶어 사용할 수 있는 기능을 한다.
# define 상수명칭 값
여기서 상수명칭 값은 -> 대문자
여기서 const 와 다른 건 뭘까 ? 자료형이 정해져 있지 않다.
그렇다고 상수가 0은 아니지만 메모리의 자리는 차지하지 않는다.
반면 const는 메모리의 기억장소크기만큼 자리를 차지하고 있다.
그래서 상수를 선언할 때 대부분 매크로 상수를 사용하기도 한다.
+ 상수를 보통 선언할 때 const와 define 중에 define을 더 사용한다.