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.0326 sec