오늘의하루

c언어 포인터 공부 본문

코딩공부

c언어 포인터 공부

오늘의하루_master 2022. 4. 14. 23:56

포인터를 이용하면 주소와 값을 확인하거나 값을 변경할 수 있다.

int warren = 1;
//warren은 1이라는 값을 갖는다.

printf("warren이 저장된 주소 : %d, 값 : %d", &warren, warren);

//-------------------------------------------------------
int * bill;
//bill이라는 포인터를 만들었습니다.
bill = &warren;
//bill(포인터)는 warren의 주소를 갖습니다.
printf("bill이 찾아간 warren의 주소는 : %d, 값 : %d",bill,*bill);

bill = &warren;
*bill = *bill * 100;
//이런식으로 값을 변경할 수 있습니다.
printf("bill이 찾아간 warren의 주소 : %d, 변경된 값 : %d",bill,*bill)

//-------------------------------------------------------
int * spy = bill;
*spy = *spy - 2;
printf("spy가 찾아간 warren의 주소 : %d, spy가 변경한 값 : %d",spy, *spy);

배열을 통해 알아보기

int arr[3] = {5,10,15};

int * p;

p = &arr;
//p = &arr[0] 과 같은 의미이다.

for (int i = 0; i < 3; i++);
{
	printf("arr[%d]의 주소는 %d, 값은 %d \n",i, p, *p);
}

값 바꾸기

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

int main(void)
{
	int a = 10;
	int b = 20;

	printf("Swap 함수 전 >> a : %d, b: %d \n",a,b);
	swap(a,b)
	printf("<값만 복사>Swap 함수 후 >> a : %d, b : %d \n",a,b);
    
    swap_adr(&a,&b)
    printf("<주소값 전달>Swap 함수 후 >> a : %d, b : %d \n",a,b);
	return 0;
}

void swap(int a, int b)
{
	int temp = a;
    a = b;
    b = temp;
}

void swap_adr(int * a, int * b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}
Comments