U E D R , A S I H C RSS

새싹교실/2012/아우토반/앞반/5.10



1. 참여자 명단


강사 장용운 O
학생 남성준 O
안혜진 O
추가 윤민욱 O

2. 수업

1. 함수
  • 함수란?
  • 함수의 형태
  • 함수의 종류
  • 함수의 정의
  • 함수의 선언, 정의 호출의 의미
2. 포인터
  • CPU와 메모리
  • 포인터와 변수의 개념
  • 포인터 연산자
  • 포인터의 종류
3. 종합
  • 인자를 전달받는 함수
  • Call-by-value Problem
  • 포인터를 인자로 받는 함수
  • Call-by-reference의 원리

다음 진도 예고
  • 포인터의 연산
  • 포인터의 포인터
  • 포인터와 상수(Const)
  • 배열
  • 다차원배열

3. 숙제

1. void Swap(int*, int*) 함수를 구현하시오.

2. 다음 소스 코드를 실행하고 결과를 확인, 이유를 분석해오시오

2-1
#include <stdio.h>

int main(void) {
 int a = 0;
 int *p = &a;

 printf("%d\n", a);
 printf("%d\n", &a);
 printf("%d\n", p);
 printf("%d\n", *p);
 printf("%d\n", &p);

 return 0;
}

2-2
#include <stdio.h>

int main(void) {
 int a = 0;
 float b = 10;
 char c = 100;
 double d = 3.5;

 int * pA = &a;
 float * pB = &b;
 char * pC = &c;
 double * pD = &d;

 printf("%d %d\n", sizeof(*pA), sizeof(pA));
 printf("%d %d\n", sizeof(*pB), sizeof(pB));
 printf("%d %d\n", sizeof(*pC), sizeof(pC));
 printf("%d %d\n", sizeof(*pD), sizeof(pD));

 return 0;
}

4. 후기

  • 후기 작성 요령 : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
    • 관련 페이지 : ThreeFs, ThreeFs(노스모크), FiveFs(노스모크)
    • 링크를 눌러보기조차 귀찮은 당신을 위한 간단한 설명
      • Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.
      • 예를 들어 지난주에 돈가스를 먹은 것에 대해 후기를 쓴다면 : "지난주에 강남에 가서 하나에 5만원하는 돈가스를 먹었다.(사실) 기대를 잔뜩 했는데 별로 맛이 없었다.(느낌) 강남은 땅값이 비싸서 값만 보고 엄청 맛있을거라 기대하면 안된다는 것을 알았다.(깨달은점) 다음에는 미리 인터넷에서 평을 찾아보고 별점이 높은 돈가스집을 찾아서 가봐야겠다.(앞으로의 계획)"



5. 숙제 제출


5.1. 남성준

1.

2.
(2-1)
처음 printf함수에서 변수 a의 메모리 안에 있는 값을 출력
다음 printf함수에서 변수 a의 메모리의 주소값을 출력
다음 printf함수에서 변수 p의 메모리 안에 있는 값을 출력

위에 *p=&a에서 변수 p는 a의 주소 값을 가르키고 *p는 a의 주소안에 있는 값을 나타내므로
네번째 printf함수에서 변수 *p의 값은 0 이고
다섯번째 printf함수에서 변수 &p는 위에서 p가 a의 주소와 값을 받았으므로 a의 주소값이 나타남

(2-2)

int * pA = &a; // pA는 a의 주소값, *pA는 a의 값
float * pB = &b; // pB는 b의 주소값, *pB는 b의 값
char * pC = &c; // pC는 c의 주소값, *pC는 c의 값
double * pD = &d; // pD는 d의 주소값, *pD는 d의 값

printf("%d %d\n", sizeof(*pA), sizeof(pA)); //*pa의 문자열은 int(4), pA의 문자열은 int(4)
printf("%d %d\n", sizeof(*pB), sizeof(pB)); // pB의 문자열은 int(4), *pB의 문자열은 int(4)
printf("%d %d\n", sizeof(*pC), sizeof(pC)); // *pC의 문자열은 char(1), pC의(주소값)문자열은 int(4)
printf("%d %d\n", sizeof(*pD), sizeof(pD)); // *pD의 문자열은 double(8), pD의 (주소값)문자열은 int(4)

따라서 결과로 4 4
4 4
1 4
8 4 가 나온다.

5.2. 안혜진

(1)

#include<stdio.h>

int swap(int *a,int *b);

int main (void){

int a=6;
int b=20;

swap(&a,&b);

printf("원래 변수a에있던값 %d 랑 변수 b에있던 %d랑 바꼈다 캬캬캬 뿌잉뿌뿌",a,b);

return 0;
}

int swap(int *a,int *b){
int temp;

temp=*a;
  • a=*b;
  • b=temp;

    return 0 ;

}
(2.1)

#include<stdio.h>
int main (void){
int a=0;
int *p=&a;

printf("%d\n",a); --------->처음에 변수a에 0을 대입했기 때문에, 결과값은 0
printf("%d\n",&a); --------->&연산자는 변수의 주소값을 출력하기때문에 결과값은 a의 주소값인 1767348
printf("%d\n",p); --------->변수p에 있는 값을 출력하므로, 결과값은 1767348
printf("%d\n",*p); --------->*연산자는 포인터변수가 저장하는 변수의 주소에 저장된 값을 출력하므로 &a에 있는 값은 0이므로
printf("%d\n",&p); --------->&연산자는 변수의 주소값을 출력하기때문에 결과값은 p의 주소값인 1767336
}

(2.2)
#include <stdio.h>

int main(void) {
int a = 0;
float b = 10;
char c = 100;
double d = 3.5;

int * pA = &a;
float * pB = &b;
char * pC = &c;
double * pD = &d;

printf("%d %d\n", sizeof(*pA), sizeof(pA));
ㄴ-----> *pA는 변수a에있는 값이므로 크기가 4, pA는 변수a의 주소값이므로 크기가 4
printf("%d %d\n", sizeof(*pB), sizeof(pB));
ㄴ-----> *pB는 변수 b에 있는 값이므로 크기가 4, pA는 변수b의 주소값이므로 크기가 4
printf("%d %d\n", sizeof(*pC), sizeof(pC));
ㄴ-----> *pC는 변수c에있는 값이므로 크기가 1 , pC는 변수c의 주소값이므로 크기가 4
printf("%d %d\n", sizeof(*pD), sizeof(pD));
ㄴ-----> *pd는 변수d에있는 값이므로 크기가 8 , pd는 변수d의 주소값이므로 크기가 4

return 0;
}

5.3. 윤민욱

윤민욱은멍청이다. 바보다. 또라이다. 메롱이다. 캬캬캬캬
어버버버ㅓ버버버버버ㅓ버버버ㅓ버법에베베ㅔ베베베베베베우비비ㅣ비비비비비빕



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:46
Processing time 0.0440 sec