본문 바로가기

개발자 모드/C언어

C언어 배열과 포인터의 관계 2

728x90
#include <stdio.h>


int main(void)

{
	

	// 배열과 포인터의 관계

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

	for (int i = 0; i < 3; i++)
	{
		printf("배열 arr[%d]의 값 %d\n", i, arr[i]);
	}


	for (int i = 0; i < 3; i++)
	{
		printf("포인터 prt[%d]의 값 %d\n", i, ptr[i]);
	}

	ptr[0] = 100;
	ptr[1] = 200;
	ptr[2] = 300;

	for (int i = 0; i < 3; i++)
	{
		//printf("배열 arr[%d]의 값 %d\n", i, arr[i]);
		printf("배열 arr[%d]의 값 %d\n", i, *(arr +i));
	}


	for (int i = 0; i < 3; i++)
	{
		//printf("포인터 prt[%d]의 값 %d\n", i, ptr[i]);
		printf("포인터 prt[%d]의 값 %d\n", i, *(ptr+i));
	}


	// *(arr+i) == arr[i] 똑같은 표현
	// arr == arr 배열의 첫번째 값의 주소와 동일 == arr[0]

	printf ("arr 자체의 값 : %d\n", arr);
	printf("arr[0]의 주소 : %d\n", &arr[0]);


	printf("arr 자체의 값이 가지는 주소의 실체값 : %d\n", *arr); // *(arr+0)
	printf("arr[0]의 실제 값 : %d\n", *&arr[0]);                 

	// *&는 아무것도 없는 거와 같다.   &주소이며, *는 그 주소의 값을 의미한다.
	//*&는 서로 상쇄된다.


	return 0;
}
​

 

 

그 결과

728x90