게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[C언어] 포인터랑 배열이랑 혼용할수 있는것 아닌가요?
게시물ID : programmer_11406짧은주소 복사하기
작성자 : 너구리몽상가
추천 : 0
조회수 : 793회
댓글수 : 6개
등록시간 : 2015/06/18 23:10:30
옵션
  • 본인삭제금지

안녕하세요. 이번에 입학한 대학교 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);

}


이렇게 코딩을하니까 EXC_BAD_ACCESS라며 오류가 뜨네요 (Xcode사용중입니다.)

#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)의 혼용이 가능한 것이라고요. 그런데 왜 위처럼 코딩을 하면 작동을 안할까요?

출처 본인
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호