10강,11강,12강 . 호출부, Escape Sequence(확장문자열 - 기능문자)
출처: 정혜경 판타스틱 자료구조 입문 (in C)
[무료] 정혜경 판타스틱 자료구조 입문 (in C) - 인프런 | 강의 (inflearn.com)
호출할때 num에 1이라는 데이터를 넣고 부르고 3이라는 데이터를 넣고 부른다.
함수라는것은 만들어놓고 여러번을 부를수 있다 라는 것을 확인이 가능하다.
n은 재 정의 될때마다 그전에 사라짐.
어떤 함수 안에서 변수의 생명주기는 그 함수가 작동 할 때 까지이다.
%d : 형식 변환 물자 : 출력 대상을 자신의 형식대로 변환 출력 해줌.
기능 문자 : new line(개행 문자)
main 에서의 return 0 은 생략이 불가능 하지만 printNumber() 함수에서 return 은 생략이 가능하다.
질문 1. 왜 int 뒤에 다르게 표시되어 있나요?
함수 선언부에 n(전달 인자 명)을 선언하는것에 대해서 선택임
함수 정의부에서는 생략된 부분이 있으면 안된다. n이라고 어떤것을 받을지 생략하면 안됨 꼭 선언해야함.
질문2. 함수 정의부를 main 위에 선언해도 되나요??
함수가 실행되면 include 는 사라지고
stdio.h 의 코드 200줄이 쭉 있고 그 후에
void printNumber 의 기능을 다 보고 내려온다.-> main에 printNumber 의 선언부를 생략해도 된다.
하지만 ! 강사님은 반대한다.
코드가 복잡해지는 실무에서는 이러면 안좋다.
누가 누구를 호출하느냐에 따라서 함수의 호출부가 선언부 위에 있으면
위치관계때문에 많이 복잡해진다. 즉 main 위에 사용자 정의 함수가 있으면 코드 계산이 복잡해진다
즉 main 함수 먼저 선언하고 그 후에 사용자 정의 함수를 선언하는 것이 바람직하다.
그래서 위에서 선언만 하고 main 함수 위로 사용자 정의 함수를 선언하면 안된다.
질문 3. return 0이 이해가 안가요..
main 함수는 int 로 반드시 만들어야 하고 return 값이 0일때 정상작동임을 확인시켜주는 기능이다.
Quiz! main 함수를 호출을 누가 할까? 메인을 부르는 주체는?
start up code 가 main 을 불러준다.
Escape Sequence (확장문자열 - 기능문자)의 이해
기능문자는 항상 역슬래쉬로 시작된다.
\t: 다음탭의 첫칸으로 커서를 이동시킨다.
여기서 다음 탭은 어떤 부분인가? 탭을 누루면 8칸을 넘어 다음탭으로 넘어간다.
abc와 xyz 를 printf 로 뽑는다고 했을때 abc 다음에 xyz 를 출력할때 한탭 띄워서 하고 싶을때 \t 를 쓴다.
\b Backspace 말그대로 뒤로 한칸 이동. 커서가 움직이는것만으로는 지워지진 않음
하지만 왼쪽 처럼 백스페이스를 두번해서 앞으로 두번 이동한 상태에서
다른 printf를 통해 문자를 출력하면 해당 위치의 문자부터 덮어 씀.
\r 커서가 현재 행의 첫칸으로 이동한다.
abc 에서 첫번째 문자인 a 앞에 커서로 이동하며
이후 printf 함수가 작동하면 해당 위치부터 덮어쓰기를 진행한다.
\\ 화면에 역슬러쉬를 출력하고자 하면 두번연달아 써야한다.
\" 쌍따음표를 출력하고자 하면 \" 을 통해서 써야 출력이 가능하다.
\ooo
\xhh
char 변수(1byte) (int 는 4byte)
1byte(8bit)
B 대신에 66을 넣어도 01000010 의 데이터 값으로 전달
\102 or \x42 를 넣어도 동일한 01000010으로 전달한다
Visual Studio 소스 -> 추가-> 새항목
이후에 c++으로 선택.
코드를 적고 그 코드를 실행시키려면 => 컨트롤 + F5 키를 눌러주면 된다.
만약 소스파일에 2개의 파일이 있고 main이 두개 존재하면 오류가 발생한다.
이땐 내가 실행하고 싶지 않은 파일에서 오른쪽 마우스 하고 속성 => 빌드에서제외=> 예 선택.
그후 실행하고자 하는 코드에 들어가서 컨트롤 f5 !