1 개요[ | ]
C언어 배열 반환하기C언어 배열 return- C언어에서는 배열을 그대로 넘길 수 없고, 포인터로만 넘길 수 있다.
- 1차원 배열은 포인터와 호환이 잘 되기 때문에 비교적 간단하다.
- 2차원 이상의 배열은 포인터로 넘길 경우, 인덱스를 사용하려면 원래의 배열 구조에 맞추어 변환과정이 필요하다.
2 1차원 배열[ | ]
#include<stdio.h> int* getNumbers() { static int arr[6] = {1,2,3,4,5,6}; return arr; } int main() { int* nums = getNumbers(); for(int i=0; i<6; i++) printf("%d ", nums[i]); }
3 2차원 배열[ | ]
#include<stdio.h> int* getNumbers2() { static int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; return (int*) arr; } int main() { int* nums = getNumbers2(); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) printf("%d ", *(nums+i*3+j)); printf("| "); } }
#include<stdio.h> int* getNumbers2() { static int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; return (int*) arr; } int main() { int (*nums)[3] = (void*)getNumbers2(); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) printf("%d ", nums[i][j]); printf("| "); } }
#include<stdio.h> void* getNumbers2() { static int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; return (void*) arr; } int main() { int (*nums)[3] = getNumbers2(); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) printf("%d ", nums[i][j]); printf("| "); } }
4 3차원 배열[ | ]
#include<stdio.h> int* getNumbers3() { static int arr[2][2][3] = { {{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}} }; return (int*) arr; } int main() { int *nums = getNumbers3(); for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { for(int k=0; k<3; k++) printf("%d ", *(nums+6*i+3*j+k)); printf(", "); } printf("| "); } }
#include<stdio.h> int* getNumbers3() { static int arr[2][2][3] = { {{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}} }; return (int*) arr; } int main() { int (*nums)[2][3] = (void*)getNumbers3(); for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { for(int k=0; k<3; k++) printf("%d ", nums[i][j][k]); printf(", "); } printf("| "); } }
#include<stdio.h> void* getNumbers3() { static int arr[2][2][3] = { {{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}} }; return (void*) arr; } int main() { int (*nums)[2][3] = getNumbers3(); for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { for(int k=0; k<3; k++) printf("%d ", nums[i][j][k]); printf(", "); } printf("| "); } }
5 같이 보기[ | ]
- C언어 배열 파라미터로 넘겨주기
6 참고[ | ]
- //www.tutorialspoint.com/cprogramming/c_return_arrays_from_function.htm