#include <stdio.h>
void show_data(int (*)[4], int);
void show_data2(int **, int, int);
int main(void) {
int arr1[2][7] = {{1, 2, 3, 4, 1, 2, 1}, {5, 6, 7, 8, 4, 3, 2}};
int arr2[3][4] = {{1, 2}, {2}, {3}};
show_data(arr2, 3);
show_data2(arr1, 2, 7);
show_data2(arr2, 3, 4);
return 0;
}
void show_data(int (* ptr)[4], int a) {
int i, j;
printf(\"--- Start Print --- \\n\");
for(i = 0; i < a; i++) {
for(j = 0; j < 4; j++) {
printf(\"%d \", ptr[i][j]);
}
puts(\"\");
}
}
void show_data2(int** ptr, int a, int b) {
int i, j;
int (* p)[b] = ptr;
printf(\"--- Start Print --- \\n\");
for(i = 0; i < a; i++) {
for(j = 0; j < b; j++) {
printf(\"%d \", p[i][j]);
}
puts(\"\");
}
}
코드가 중요한건 아니고
열혈강의 들어보니까
2차원 배열 전달할 때
int (* ptr)[4] 이렇게 길이까지 전달하라고 하는데
int** ptr, int b 이렇게 함수로 전달해서 함수 안에서
int (* p)[b] = ptr; 이렇게 정의해서 사용하면 안되는거야?
이클립스는 워닝은 뜨던데 프로그램은 잘 돌아가던데
2차원 배열이랑 pointer to pointer는 그 의미가 완전히 달라
도대체 왜 귀찮게 그짓을 하냐. 가로길이를 아니깐 그냥 집어 쳐 넣으면 될것을.
그리고 배열이름으로 ptr쓰지마 헷갈려
만약에 2차원 배열을 두개 쓰면 배열길이 때문에 함수를 두개 만들어야 되는거자나
하나로 하는게 편하지 않을까 싶어서
그런식으로 플밍하면 언제가는 에러 먹고 존나 난감해질수도 있으니까 귀찮아도 두개만드는게 나아
이것도 어차피 기초이니 노가다가 답이다
아 미안 저거 다시 봤는데 2차원 배열을 인자로 전달 받을때부터가 맛이 갔다; 위에분 말처럼 2차원 배열의 포인터 형이 더블 포인터가 아니니깐
결론은 그냥 함수 노가다 ㄱㄱ
아 그냥 pointer로 해야되는구나 어쨋든 노가다가 나을듯 ㄳ
ㅇㅇ즐노가다^^