iOS/정보처리기사

[정보처리기사] C언어 - 함수에 주소를 전달하는 예제3

Chafle 2022. 6. 22. 23:19
반응형
ex1 

 

#include<stdio.h>

#define SIZE 3

void func(int *m, int *a, int b);

int main(void) {

int num [SIZE] = {1, 3, 6};

int a = 10, b = 30;

func( num, &a, b);

printf("a=%d, b=%d₩n", a, b);

return 0;

}

 

 

void func(int *m, int*x, inty) {

int i = 0, n =0;

y = *x;

n = *(m+1) + (*m+2);

*x = ++n;

}

 

 

 

 

해설

 

 

#define SIZE 3 -> 모든 SIZE는 3으로 대체한다.

int num [SIZE] = {1, 3, 6}; -> num[3] = {1, 3, 6}

 

num 100번지 101번지 102번지
100번지 1 3 6
  a b
임의의 주소 200번지 300번지
주소값 10 30

 

func( num, &a, b); -> 100번지, 200번지, 30 들고 func호출한다.

 

y = *x; -> y에 x의 값 할당 -> 200번지를 참조하는 10 할당

n = *(m+1) + (*m+2); -> (100번지+1 = 101번지)이 참조하는 값=3 + (100번지의 값 +2)=3 ->  3 + 3 = 6를 n에 할당

*x = ++n; -> x가 참조하는 값에 ++n -> 200번지의 값에 4->5를 할당

 

 

func

  *m *x y i n
초기값 100번지 200번지 30 0 0
y = *x     10    
n = *(m+1) + (*m+2)         6
*x = ++n         7
함수 다 쓰고 초기화 - - - - -
  a b
임의의 주소 200번지 300번지
주소값 10 30
*x = ++n 7  
최종값 7 30

 

printf("a=%d, b=%d₩n", a, b);

 

답 a=7, b=30

 

 

 


 

 

 

 

반응형