#include <stdio.h>
int main() {
int list[3][4] = {10,20,30,40,50,60,70,80,90,100,110,120};
// list, list[0], *list는 시작 주소값은 같다.
// 하지만
// list + 1 = 다음 행으로 이동
// list[0] + 1 = 같은 행에서 다음 열로 이동
printf("%p\n", list[0]); //0번째 행의 시작 주소값
printf("%p\n", list); //0번째 행의 시작 주소값
printf("%p\n", *(list)); //0번째 행의 시작 주소값
printf("%p\n", list + 1); //한 행 전체, 즉 int 4개를 건너뜀->50
printf("%p\n", list[0] + 1); //20
printf("%d\n", *(list[0] + 1)); //20 출력
printf("%d\n", **(list + 1)); //50 출력
printf("%d\n", *(list[0])); //list[0]가 첫 번째 원소의 주소이므로 *를 붙이면 그 주소의 값->10
printf("%d\n", **(list)); //첫 번째 행인 list[0]->첫 번째 행의 첫 번째 값->10
printf("\n");
printf("%p\n", list[0]+3); //첫 번째 행의 첫 번째 원소 주소->3칸이동한 주소값
printf("%d\n", *(list[0]+3)); //0번째 행의 시작 주소값->2칸이동한 주소값->그안에 있는 실제값->40
//!!주의!!완전히 다른 이동!! list는 한 행 전체를 단위로 이동
//한 행에는 int가 4개 -> 행3개이동 -> 배열끝을 넘어 감-> 잘못된 코드임
printf("%d\n", **(list+3)); //Undefined Behavior(정의되지 않은 동작)
printf("%d\n", **(list+1)); //50
printf("%d\n", **(list+2)); //90
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: