배열 포인터
//목표: 문자열(문자의 배열)을 위한 2차원 배열(문자열이 여러개)
//2차원 배열을 가리키기 위한 배열 포인터
#include <stdio.h>
#define ROW 3 //ROW : 줄
#define COL 100 //COL : 칸
//void print_array_2d()
int main()
{
int i = 0;
int j = 0;
//문자열 여러개로 2차원 배열을 초기화
char arr[ROW][COL] = { "Weclome", "to", "Neverland"};
//위의 2차원 배열은 아래와 같은 효과
char text[COL] = "Welcome";
char* p_arr = text; //문제없음 text의 원소가 char이므로 둘다 char타입이 맞음.
char(* p_arr2)[COL] = arr; //p_arr은 char를 가리키는 포인터이지만,
//arr은 2차원 배열, 즉 원소는 1차원 배열이라는 의미이므로 타입이 다름. ERROR!
char text2[COL] = "to";
char text3[COL] = "Neverland";
printf("%d %d\n",p_arr, p_arr++);
printf("%d %d\n",p_arr2, p_arr2++);
printf("%s\n", text);
printf("%s\n", text2);
printf("%s\n", text3);
//for( i = 0; i < ROW; i++){
//printf("%s\n", arr[i]);
//}
//print_array_2d(arr);
for(i=0; i< ROW; i++){
for(j =0; j < COL; j++){
printf("%c", arr[i][j]);
}
printf("\n");
}
}
//배열포인터의 사용예
//함수에서 문자열 배열을 인자로 넘기고자 할 때
#include <stdio.h>
#define ROW 5
#define COL 20
//배열 포인터로 2차원 배열을 함수의 인자로 받을 수 있다.
//char(*p_str)[COL] = brand;
//배열은 받는 쪽(함수)에서만 크기를 알 수 있는 방법이 없으므로 인자로 무조건 받아야 한다.
void printf_string(char(*p_str)[COL], int count){
int i=0;
for( i=0; i< count; i++){
//printf("%s\n", p_str[i]);
//*참조연산자를 사용하여
printf("%s\n", *(p_str+i));
}
}
int main(){
int i =0;
char brand[ROW][COL] = { "LG","Apple", "Samsung", "Google", "Motorola"};
char brand2[ROW][COL] = { "Apple", "Samsung", "Google", "Motorola"};
printf_string(brand, ROW);
printf_string(brand2, 4);
}
'C언어 > 복습' 카테고리의 다른 글
[C언어]DAY16_동적 할당, 동적 배열 (0) | 2020.02.10 |
---|---|
[C언어]DAY15_ 포인터 배열, 더블포인터, 문자열 표준 라이브러리 (0) | 2020.02.10 |
[C언어]DAY13_문자열 응용, 다차원 배열 (0) | 2020.02.05 |
[C언어]DAY12_문자열 (0) | 2020.02.01 |
[C언어]DAY11_1차배열 포인터의 사용예 (내림차순 정리) (0) | 2020.02.01 |