C-Language/Arrays
Arrays in C Language
Soul-Learner
2016. 11. 12. 19:54
C 언어에서 배열 사용하기
배열 선언, 초기화, 함수 파라미터에 배열 전달하기, 함수가 배열을 생성하여 리턴하는 예
#include <stdio.h> void printSum(int[], int size); void printPtr(int *a, int size); void printMulti(int a[][2], int size); int * createArr(); int main() { int a[5]; // 배열의 선언 a[0] = 1; // 초기화 a[1] = 3; a[2] = 5; a[3] = 7; a[4] = 9; printf("a[0]=%d \n", a[0]); // 배열의 사용 int b[3] = { 10,20,30 }; // 배열의 선언 및 초기화를 동시에 printf("b[1]=%d \n", b[1]); int c[] = { 5, 10, 15 }; // 배열의 크기를 지정하지 않은 경우 printf("c[2]=%d \n", c[2]); int point[3][2] = { {0,1},{2,3},{4,5} }; // 2차원 배열 printf("point[1][2]=%d \n", point[1][1]); printSum(c, 3); printPtr(c, 3); printMulti(point, 3); int *d = createArr(); printf("%d, %d, %d \n", d[0], d[1], d[2]); return 0; } // 함수의 파라미터에 배열을 받아서 배열의 원소를 합산하여 출력하는 예 void printSum(int a[], int size) { int sum = 0; int i = 0; for (i = 0; i < size; i++) { sum += a[i]; } printf("배열원소 합산결과=%d \n", sum); } // 배열을 파라미터로 받을 때 포인터 변수를 사용하는 예 void printPtr(int *a, int size) { int sum = 0; int i = 0; for (i = 0; i < size; i++) { sum += a[i]; } printf("배열원소 합산결과=%d \n", sum); } // 2차원 배열을 파라미터로 받는 함수의 예 void printMulti(int a[][2], int size) { printf("%d \n", a[1][1]); } // 배열을 리턴하는 함수 int * createArr() { int a[3] = { 3,2,1 }; return a; }
배열을 포인터로 다루는 방법
배열변수는 배열의 첫번째 원소의 값을 가리키는 포인터 상수이다 (constant pointer to the first element of the array)
#include <stdio.h> int main() { int a[3]; // 배열의 선언 int *p; a[0] = 1; // 초기화 a[1] = 3; a[2] = 5; // 배열변수는 포인터 상수이다. 즉, 배열변수 안에는 첫번째 원소의 주소가 저장되어 있다 // 메모리의 주소를 이용(포인터 연산)하여 바로 인접한 메모리 영역으로 이동할 수 있다 int i; for (i = 0; i < 3; i++) { printf("%d ", *(a + i)); } printf("\n\n"); p = a; // 배열변수는 첫번째 원소의 값을 가리키는 포인터 상수이다 // 포인터변수는 포인터연산을 통해 인접한 방의 값을 참조할 수 있다 printf("%d %d %d \n", *p, *(p + 1), *(p + 2)); printf("\n"); for (i = 0; i < 3; i++) { printf("%d ", *(p + i)); } printf("\n\n"); return 0; }