2020. 4. 19.

[c] 인프런 49. 포인터로 배열 값 변경하기 강의 정리



#include<stdio.h>

void swap(int a, int b);
void swap_addr(int * a, int * b);
void changeArray(int* ptr);

int main(void)
{
// 배열일 때 , arr -> 주소
int arr2[3] = { 10,20,30 };
changeArray(arr2);
for (int i = 0; i < 3; i++)
{
printf("%d\n", arr2[i]);
}
changeArray(&arr2[0]);
for (int i = 0; i < 3; i++)
{
printf("%d\n", arr2[i]);
}
// 첫번째 배열 항목에 주소를 던지면 세번째 배열항목의 주소로 바꿔서 출력
//scanf 에서 &num과 같이 & 를 사용하는 이유

return 0;
}

void swap(int a, int b)
{
printf("(swap 함수내) a의 주소 : %d\n", &a);
printf("(swap 함수내) b의 주소 : %d\n", &b);
int temp = a;
a = b;
b = temp;
printf("swap 함수 내 => a: %d, b : %d\n", a, b);
}

void swap_addr(int * a, int * b)
{
int temp = *a;
*a = *b;
*b = temp;
printf("swap 함수 내 => a: %d, b : %d\n", *a, *b);
}

void changeArray(int * ptr)
{
ptr[2] = 50;
}


값을 넣거나 바꿀때 주소값으로 정확히 넣어줘야 기존에 있던 주소공간이 변경된다.

댓글 없음:

댓글 쓰기