5일차 예비수업 메모

2015. 2. 16. 21:04창고

728x90
728x90

고용센터 문제 해결로 부득이하게 결강을 하게되었다..

슬프도다 교수님 수업 하나 하나가 주옥같은 말로 이뤄져있는데 못 듣다니!!!!

그래서 동기 동생에게 필기를 빡세게 부탁했다.


1. printf, scanf

printf : print + format

printf("문자열 or 문자열 상수", [가변인수(길이, 형태가 있지 않은)]);


scanf : scan + format

scanf("서식만 들어갈 수 있음", 가변인수);

% : format(서식)

\n, \r, \b : 확장열(excape sequence)

여기서의 escape는 탈출 X, 확장 O


2. 예제

#include <stdio.h>

void main()
{
 int a;
 int b;
 int c=0,d=0,e=0;

 a = scanf("%d%d%d",&c,&d,&e); // scanf의 리턴값 : %로 정상적으로 입력받은 값의 개수
 b = printf("%d %d %ddesu\n", c,d,e); // printf의 리턴값 : 출력된 문자열의 길이가 byte단위로 리턴?
 

 printf("%d\n", a);
 printf("%d\n", b);

}
================================================
<결과값>
(입력) 1 3 4
1 3 4desu
3
10
================================================


실수 입력 받을때는 %f, %lf 둘 다 된다.

출력할때는 float은 %f, double은 %lf로 함.

scanf에는 확장열을 쓰지 않는다. 서식만!

&는 번지를 의미, 인수로 주소를 전달하는 것.


3. int* a 의 정의

포인터 연산자로 풀어쓰면 이렇게 된다.

운영체제로부터 메모리 공간 어딘가에 자료형에 상관 없이 4byte의 메모리 공간을 할당 받고

그 주소 위에 a라는 방을 만들고 그 안에는 쓰레기주소값이 들어있다.(32비트 운영체제일 경우)


1개의 주소를 표현하기 위해 쓰이는게 4byte = 1WORD이므로 32비트에서 4byte인 것이고

16비트 운영체제에선 2byte, 64비트 운영 체제일때는 8byte의 메모리 공간이 할당된다.


포인터는 주소값을 저장하기 위한 특수한 변수.

주소만 받기 때문에 4byte로 할당받음 그런데 자료형은 왜 필요한가?

포인터 연산시 내부적으로 얼마만큼 참조를 뛸지 알아야 하기때문에 자료형이 필요.

void*형 : 받을때는 주소만 받고, 사용할때는 형변환을 이용해 타입을 잠시 바꿔서 사용해야 함.


4. 과제 및 연구

http://soen.kr

들어가서 포인터 파트 10-1, 10-2장 읽어오기

10-1장 정리해오기


포인터란 무엇인가?

포인터에 자료형이 왜 필요한가?

직접 설명할 수 있을 정도로 숙지해오기


내일은 포인터연산에 대해 배울 예정!





728x90
반응형

'창고' 카테고리의 다른 글