C 언어 배열 포인터 반환 - C eon-eo baeyeol pointeo banhwan

1 개요[ | ]

C언어 배열 반환하기C언어 배열 return
  • C언어에서는 배열을 그대로 넘길 수 없고, 포인터로만 넘길 수 있다.
  • 1차원 배열은 포인터와 호환이 잘 되기 때문에 비교적 간단하다.
포인터 연산(+n)과 인덱스 사용([n])이 일치하기 때문이다.
  • 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

  • 분류 댓글:
  • {{cat.name.replace(/_/g,' ')}} ({{cat.cnt}})
  • {{comment.page_title}} {{comment.name}}

Toplist

최신 우편물

태그