반응형
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
반응형
'iOS > 정보처리기사' 카테고리의 다른 글
기사 시험 큐넷 접수 꿀팁 전수(실패하고 울기 없기..) (10) | 2022.06.23 |
---|---|
[정보처리기사] C언어 - STATIC변수 (0) | 2022.06.23 |
[정보처리기사] C언어 - 함수에 주소를 전달하는 예제2 (7) | 2022.06.22 |
[정보처리기사] C언어 - 함수가 주소를 리턴하는 경우. (0) | 2022.06.22 |
[정보처리기사] C언어 - 함수와 변수의 유효범위 (0) | 2022.06.21 |