강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kathyjungminlee3616
kathyjungminlee3616

câu hỏi đã được viết

Cùng học C và C++ cùng lúc - Doodle Doodle's C/C++

28 - mảng con trỏ

2차원 배열 관련 질문입니다.

Viết

·

381

0

안녕하세요. 포인터를 공부하고 있는 학생입니다.

 

예를 들어 1차원 배열이 있을 떄

 

int a = 2;

int b = 3;

int* ptr[2] = { &a,&b };

for (int i = 0; i < 2; i++) {

printf("%d ", *ptr[i]);

}

이렇게 하면 2,3이 나오는건 알겠습니다.

 

2차원 배열로 넘어가서 

 

int a1[3]= { 1,2,3 };

int b1[3] = { 10,20,30 };

int* ptr1[2] = { a1,b1 };

 printf("%d\n", *a1); --> 이때 1이 나오는 것도 알겠습니다. a1은 a1[0]의 주소값이 들어있고 *a1을 함으로써 a1[0]을 가리키니까요.

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

printf("%d ", ptr1[i][j]);

}

printf("\n");

}

--> 문제는 볼드체로 표시한 부분인데, ptr1[i]가 사실상 포인터여서 &ptr1[i][0]이라는 것을 배웠습니다. 그렇다면 ptr1[i][j]도 &ptr1[i][j]이라는 것인데, 그러면

printf("%d ", ptr1[i][j]);

이걸 했을 때 ptr1[i][j]의 주소값이 나와야하지 않나요? *ptr1[i][j]를 하니까 에러가 뜹니다. 1차원 배열에서는 *를 써줘야 오히려 원소가 나왔는데 왜 이차원 배열에서는 안써줘도 되는지 궁금합니다.

 

감사합니다!

cC++

Câu trả lời

Câu hỏi này đang chờ câu trả lời
Hãy là người đầu tiên trả lời!
Hình ảnh hồ sơ của kathyjungminlee3616
kathyjungminlee3616

câu hỏi đã được viết

Đặt câu hỏi