프로그래밍/C

배열과 포인터

swedu 2023. 2. 15. 05:42
728x90
반응형

2023.02.15  최초작성

 

 

 

 

아래 코드는 int 타입의 1차원 배열을 사용한 예제이다.

#include <stdio.h>
void main() {
	int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	int a = 10;
	int* ap = &a;
	int* arrp[5] = {&a, ap, arr, arr+3, &arr[5]};
	for (int i = 0; i < 10; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");
	for (int i = 0; i < 10; i++) {
		printf("%d ", *(arr+i));
	}
	printf("\n");
	for (int i = 0; i < 5; i++) {
		printf("%d ", *arrp[i]);
	}
	printf("\n");
	for (int i = 0; i < 5; i++) {
		printf("%d ", **(arrp+i));
	}
}

[실행 결과]

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

10 10 1 4 6

10 10 1 4 6

 

 

 

 

아래 코드는 int 타입의 2차원 배열을 사용한 예제이다.

#include <stdio.h>
void main() {
	int arr[3][4] = {
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	};
	int* ap = arr;
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
		for (int j = 0; j < sizeof(arr[0]) / sizeof(int); j++) {
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
		for (int j = 0; j < sizeof(arr[0]) / sizeof(int); j++) {
			printf("%d ", *(arr[i]+j));
		}
		printf("\n");
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
		printf("%d ", *(*arr+ i));
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
		printf("%d ", *(ap + i));
	}
}

[실행 결과]

1 2 3 4

5 6 7 8

9 10 11 12

 

1 2 3 4

5 6 7 8

9 10 11 12

 

1 2 3 4 5 6 7 8 9 10 11 12

1 2 3 4 5 6 7 8 9 10 11 12

 

 

 

 

아래 코드는 int 타입의 3차원 배열을 사용한 예제이다.

#include <stdio.h>
void main() {
	int arr[2][3][4] = {
		{
			{1,2,3,4}, {5,6,7,8}, {9,10,11,12}
		},
		{
			{13,14,15,16}, {17,18,19,20}, {21,22,23,24}
		}
	};
	int* ap = arr;
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
		for (int j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]); j++) {
			for (int k = 0; k < sizeof(arr[0][0]) / sizeof(int); k++) {
				printf("%d ", arr[i][j][k]);
			}
			printf("\n");
		}
		printf("\n");
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
		for (int j = 0; j < sizeof(arr[0]) / sizeof(arr[0][0]); j++) {
			for (int k = 0; k < sizeof(arr[0][0]) / sizeof(int); k++) {
				printf("%d ", *(arr[i][j]+k));
			}
			printf("\n");
		}
		printf("\n");
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
		for (int j = 0; j < sizeof(arr[0]) / sizeof(int); j++) {
			printf("%d ", *(*arr[i]+j));
		}
		printf("\n");
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
		printf("%d ", *(**arr+i));
	}
	printf("\n");
	for (int i = 0; i < sizeof(arr) / sizeof(int); i++) {
		printf("%d ", *(ap + i));
	}
}

[실행 결과]

1 2 3 4

5 6 7 8

9 10 11 12

 

13 14 15 16

17 18 19 20

21 22 23 24

 

 

1 2 3 4

5 6 7 8

9 10 11 12

 

13 14 15 16

17 18 19 20

21 22 23 24

 

 

1 2 3 4 5 6 7 8 9 10 11 12

13 14 15 16 17 18 19 20 21 22 23 24

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

 
 
728x90
반응형

 

728x90
반응형

'프로그래밍 > C' 카테고리의 다른 글

병합 정렬 C언어 코드  (0) 2023.02.16
삽입 정렬 C언어 코드  (0) 2023.02.16
C언어 동적할당 malloc, calloc, realloc, free  (0) 2023.01.20
C언어 구조체 포인터  (0) 2023.01.19
C언어 함수 포인터  (0) 2023.01.19