210827, C언어 입문- day 3

Min Hyeok·2021년 8월 27일
0

C언어 개념 익히기

목록 보기
3/19

안농. 어제 노트북 개긑이 안되서 어제자 공부일지 작성하고 오늘꺼 쓰는중이다.

오늘 공부하는데 ㄹㅇ 너무 나른하더라.. 이게 "나태함"인가. 그래서 졸았음. 아 ㅋㅋ.. 전역하고 팽팽놀다가 공부하려니 느슨한걸 어떢하라고~~ 매일같이 공부하다보면 좀 나아지겠지.

여튼, 오늘자 공부도 시작하자.

아 맞다. 그리고 어제 갤워치4 가죽스트랩 주문함. ㅋㅋ 도키도키

5장, 함수

난 그나마 예전에 공부를 했어서 "ㅇㅎ ㅇㅎ~~"하면서 읽지, 처음 코딩을 접하는 사람들은 꽤 뇌절할법한 내용이다. 근데 중요한건 나도 읽으면서 알기만 하지 써먹으라면 못 써먹음. 아 ㅋㅋ 나중에 포인터같은거 가면 난 어떡하냐 .,.,...

함수? 고게 머시냐.

우리 컴퓨터는 단순화된 명령을 차근차근 하나씩 받아들인다.

보통 우리가 "외출가기" 생각하면 씻고~ 옷갈아입고~ 집을 나가서~ 목적지까지 가는걸 한번에 생각한다.

근데 이 컴퓨터는 그걸 못함. 멍청한놈. "씻기" > "옷 갈아입기" > "집 나가기" > "목적지까지 이동" 이렇게 차근차근 말해줘야 이해를 한다. 근데 이걸 우리 닝-겐 처럼 "외출하기"라는 명령어에 묶어버리면? 나중에는 "외출하기"라고 말해줘도 알아듣겠지. 얼마나 효율적이냐. 설명충이 되지 않아도 된다는거야. 이런 식으로 정해진 작업들을 수행할 수 있도록 여러 명령문을 하나로 묶은 것을 함수라고 한다. ㄹㅇㅋㅋ다.

6장에 표준 뭐시기 함수가 있는걸 보면 여기서 흔히들 아는 printf, scanf, if 등등.. 함수를 알려주려나 보다. 일단 여기선 main함수가 나오네. 저번에 2장에서 예시로 접했듯이 main함수는 "프로그램 시작 함수" 이다. 다시마래서~~ main 함수는 "컴파일러에게 프로그램이 시작한다"고 알려주는, 특별한 함수라고 생각하면 된다는거시다. 알간?

그리고 우리가 이후에 만들 C언어 프로그램은, 다 함수의 집합체다 이거지. 좀 있다가 Sum 예시를 만들어 볼텐데, 그걸 보면서 이 말을 이해하면 될 것 같다.

지금부터 함수를 정의하고 호출하는 것에 대해 설명할텐데, 앞서 예시를 아예 완성본으루다가 맹글어놓겠다.

#include <stdio.h>

int value1, value2;

int sum(value1, value2) {
	result = value1 + value2;
   return result;
} /** A **/

int main() {
	int a=3, b=12, num;
   num=sum(a,b);
   printf("결과값은 %d입니다", num);
} /** B **/

이걸 놓고 차근차근 설명해보갓서요!

우선, A함수. 내가 int sum ~~ 뭐시기뭐시기 적어놨는데, 여기서 sum이 함수 이름이고, int는 자료형이면서, 반환형이다. "반환"에 관한 내용은 쪼꼼만 기다려봐..

저기서 value1, value2는 맨 앞에 int라고 정의되어있지..? 이 두개는 매개변수다. sum이라는 함수를 실행하기 위해 필요한 data랄까.. ㅇㅇㅇ

그리고 { } 안에 들어간 내용은 작업내용이고, return result; 는 반환값. value1, value2가 더해져서 나온 결과값인 result를 sum이라는 함수의 결과값으로 반환을 하게 된다. 그래서 result를 "반환값"이라고 하는거고, 이 반환값인 result가 int형 자료형으로 설정이 됨과 동시에 반환형으로 설정이 되는거다. 뭔 소린지는 나만 알아들으면 되니까 요정~도로 설명..

그리고 뒤에 main이 되는 main함수를 작성을 했다.
sum이라는 함수를 만들었으면, 써먹어봐야할거 아녀?
나는 3과 12를 더하고 싶다고 가정하겠다.
그리고 반환값을 main함수에서 저장하는 변수는 num이라고 정의했고.

그러면 계산값인 num은 위의 함수대로 sum(a,b)가 된다. 근데 저기서 변수 a, b를 저장한 걸 보면 각각 3, 12지? 그럼 3과 12를 더하는 과정에서 sum함수를 호출한다. 여기서 main함수에서 sum함수가 호출되었으니, A함수는 피호출자, B함수는 호출자가 된다. 그리고 뭐 요래저래 하면 쨔잔~~!! ("%d는 나중에 자세히 공부하게 해주신단다. 일단 정수를 출력할 때 사용하는 키워드라고 함. 내 기억엔 %f 등등 많다.)

아 그리고, 보통 호출자는 피호출자의 아래에 있어야한다..?

만약 피호출자가 호출자의 위쪽에 놓일 수 없는 상황이 된다면, 함수 원형이란걸 사용해야한다.

만약 이 함수 원형을 미리 선언해 둔다면, 이 프로그램 소스파일 으딘가에 해당 형식을 가진 함수가 존재한다는 걸, 컴파일러가 인지하게 된다! 이거지. 일케 미리 인지를 해두면, 굳이 호출자 피호출자 순서를 막 끙끙 앓으면서 신경 쓸 필요가 없다. aradooja.

예를 들자면,

int sum(int value1, int value2); /** 얘가 함수 원형! **/

int main() {
	int a=3, b=12, num;
    num=sum(a,b);
    printf("결과값은 %d입니다", num);
}

int sum(value1, value2) {
	result = value1 + value2;
    return result;
}

뭐, 오늘은..

여기까지!

0개의 댓글