게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C언어 이중 포인터 질문드립니다.
게시물ID : programmer_20003짧은주소 복사하기
작성자 : Intel
추천 : 0
조회수 : 746회
댓글수 : 4개
등록시간 : 2017/03/18 13:15:02
옵션
  • 베스트금지
  • 베오베금지
  • 본인삭제금지

#include <stdio.h>
#include <stdlib.h>
int main(void){

int A[3][4]={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
int *p = *A; 
int **test;
      test = &p;

printf("test[0][0]: %d\n",test[0][0]);
printf("test[0][4]: %d\n",test[0][4]);
printf("test[1][4]: %d\n",test[1][4]);
}

여기서 첫번째 printf에서는 a[0][0]인 11을출력하고, 두번째 printf에서는 주소 연산으로 a[1][0]인 
21을 출력하는것 까지는 알겠습니다.

test[0][4] =  *(   *(test + 0)  + 4)  이므로  *( &A[0][0] + 4)  이므로 21

그런데 세번째 printf에서는 제 생각으로는 31이 출력되어야 할것 같은데

test[1][4] = *( *(test + 1) + 4)  = *( &A[1]+4) = *( &A[1][0] +4) 이므로 A의 1행 0열로부터 4만큼 더한 곳인 31이 출력되어야 하는것 아닌가요?

이상한 값이 출력되네요..

이미지 3.png


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