1. 함수의 해석
위의 함수에 대한 결과 값을 예상하기 위해서는 아래 그림처럼 변수를 확인하면서 해석해보는 것이 좀 더 이해하기 쉽다.
문자열 상수와 main에 있는 변수 함수의 인자를 적어놓으면서 반복문의 진행과정을 살펴보면 실제 프로그램 결과 값을 예측하는데에 도움이 된다.
2. 문자열 입출력 연습
프로그램은 모두 다를수 있으며 처음에 썼던 함수를 이용해서 'apple banana tomato'를 출력하였다.
또한 apple와 'banana tomato' 사이에 pineapple를 넣기 위해서 아래 그림과 같이 추가적인 소스를 넣어 주었다.
위 와 같이 임시공간 caTemp를 추가하여 문자열 'banana tomato' 임시로 저장하며
apple과 banana 사이에 pineapple를 넣는다.
첫번째, caTemp에 문자열 banana tomato를 넣어주고
두번째, banana가 있는 가장 앞자리에 pineapple을 넣어 준다. 이때 apple뒤에 오기 위해서 uiLen을 6으로 해준다.
마지막으로, banana tomato 문자열이 있는 caTemp를 pineapple다음에 올수 있도록 붙여 넣는다.
그런 다음 출력!!
결과는
2. scanf 함수를 이용한 문자열의 입력
p263 예제
위 의 표시된 scanf문을 먼저 보면,
printf("%s \n", str); 문자열 출력을
scanf("%s \n", str); 문자열 입력을 의미한다. 하지만 이전의 scanf문에서는 문에서는 ampersand(&)를 같이 써줘야 했으나(예: &str) 이 예문에서는 사용되지 않는다. 이 이유는 무엇인가?
메모리의 위치를 알려주려고 주소인자 '&'를 사용하는데
char str[50]; 에서 처럼 str은 변수가 아닌 배열이고 이미 주소를 의미하므로 '&' 사용하지 않고 scanf문 사용한다.
* scanf문의 단점: 문자열의 수를 지정해 주더라도 키보드로 입력하는데로 입력받기 때문에(문자열의 경우) 보안상의 위험이 있어서 visual studio에서 컴파일시 경고가 뜰수 있다. (해킹의 위험성이 있기 때문에)
*scanf문은 자동으로 NULL 값이 입력된다.
3. 함수의 호출방법
위의 그림에서 test함수를 먼저 살펴보면,
n1과 n2의 값이 바뀌는 함수이나, 함수 안에서만 실행되고 끝남을 알수 있다.
하지만 아래 swap함수는 이러한 단점을 개선하기 위해서 사용되어 질수 있다.
위의 그림처럼 주소 값을 통한 변수의 위치를 바꾸게 되면 안에서만 실행되던 함수의 단점이 개선되게 되며 여기서 iTemp변수를 만들어야 하는 이유는 변수 두개의 위치를 바꿀때 임시적으로 저장할수 있는 공간이 필요하며 그래야 변수 조작이 가능하기 때문에 임시적인 메모리공간을 만들어준다.
따라서, 함수의 호출방법에는 크게 두가지가 있다.
첫번째, call by value 값에 의한 함수 호출
두번째, call by address 주소에 의한 함수 호출이 있다.
첫번째 예제에서는 Null이 없으며
아래 예제에서는 Null이 자동으로 따라 붙는다.
NULL이 필요없을 경우는 일일이 첫번째 예제처럼 써주어야 하나
Null을 쓸경우에는 그럴 필요없이 간단하게 문자열을 써줄수 있다.
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
04.02 업무일지 [이경진 출석번호 20번) (16) | 2014.04.03 |
---|---|
2014.03.31 오영주 교육보고 (14) | 2014.04.01 |
2014.03.28 오두환 교육보고 (20) | 2014.03.30 |
2014년 3월 27일 양태영 [출석번호 16번] (14) | 2014.03.27 |
2014년 03월 25일 손병규[출석번호 14] (16) | 2014.03.25 |
2014년 3월 24일 서상우 업무일지[출석번호 13번] (18) | 2014.03.24 |
20140321 박영주 업무일지[12번] (16) | 2014.03.21 |
2014년 3월 20일 업무일지 문대영[출석번호 11] (15) | 2014.03.20 |