C : 포인터 예제

지환·2022년 1월 8일
0

C언어

목록 보기
18/37
post-thumbnail

이번 시간에는 C 포인터와 관련된 문제를 모두 풀어보자.

대표적인 에제부터 시작한다.

<간접 주소 지정 방식으로 변수 값을 교환하자>

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

}

int main()
{
	int a = 95, b = 80;
	
	printf("Before : start = %d , edn = %d\n", a, b);
	if (a > b) {
	
		swap(&a, &b);
	}
	printf("after : start = %d , end = %d\n", a, b);
	



}

< 간단한 2차원 배열을 포인터로 구현 한 것>

int main()
{
	int arr[3][4] = { {3,4,3,2},  {1,2,3,5}, {4, 5, 6, 9 } };
	int i, j;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d", *(*(arr + i) + j));
		}
	}


}

<2차원 배열과 포인터>

int main()
{
	int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7,8,9} };
	int(*p)[3] = arr; //arr의 배열의 주소를 *p가 받는다.
	int i, j;
	for(int i = 0; i <3; i++)
		for (int j = 0; j < 3;j++)
		{
			printf("%d", (*(p + i)[j]));
		}


}
  • 여기서 중점인 것은 (*p)[3]이 의미하는 것, 2차원 배열을 포인터로 구현 한 것.

  • 마지막에 printf("%d", (*(p+i)[j])); 가 의미하는 것을 기억하자.

char data[4][5];
char (*p)[5];
p = data //포인터 변수 p는 2차원 배열 data변수의 시작 주소를 저장함
(*p)[1] = 3; // p[0][1] = 3
(*(p+1))[2] = 4; // p[1][2] = 4
(*(p+2))[3] = 5; 
(*(p+3))[4] = 8;

  • 2차원 배열을 포인터로도 구현가능하다. 반복학습하자.
profile
아는만큼보인다.

0개의 댓글