옵션 |
|
안녕하세요. 이번에 입학한 대학교 1학년 새내기입니다. 궁급한게 생겨 질문을 하려고합니다.
#include <stdio.h>
int f(int **p){
int result;
result = p[2][1]+p[1][3];
return result;
}
int main(void) {
// 입력
int x[4][4]={{10,12,33,34},{51,67,56,78},{18,44,35,33},{21,61,43,77}};
// 처리
int ans = f(x);
// 출력
printf("%d",ans);
}
#include <stdio.h>
int f(int p[4][4]){
int result;
result = p[2][1]+p[1][3];
return result;
}
int main(void) {
// 입력
int x[4][4]={{10,12,33,34},{51,67,56,78},{18,44,35,33},{21,61,43,77}};
// 처리
int ans = f(x);
// 출력
printf("%d",ans);
}
근데 이렇게 바꾸니까 잘 실행되더라고요. 포인터를 이용하다가 만들어진것이 배열이라고 교수님깨 들었습니다. C라는 배열을 만들면 C라는 포인터 인수가 만들어지고 이는 C에 저장될 값들 중 가장 첫번째인 값의 주소가 들어가고, 따라서 C[i]와 *(C+i)의 혼용이 가능한 것이라고요. 그런데 왜 위처럼 코딩을 하면 작동을 안할까요?
출처 | 본인 |