강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Hyeonjun Yun님의 프로필 이미지
Hyeonjun Yun

작성한 질문수

홍정모의 따라하며 배우는 C언어

10.14 2차원 배열과 포인터

12분 30초쯤 질문입니다

작성

·

239

0

float arr2d[2][4] = { {1.0f, 2.0f, 3.0f, 4.0f}, {5.0f, 6.0f, 7.0f, 8.0f} };

float (*pa)[4]; // a SINGLE pointer to an array of 4 floats

 

pa = arr2d;

 

위에서 pa는 an array of 4 floats를 가리키는 pointer라고 했는데

그러면 pa=arr2d[0]; 이 되어야 하는 건 아닌가요?

pa가 어떻게 2d array인 arr2d를 가리킬 수 있게 되는지 궁금합니다. 

퀴즈

C 언어에서 표준 배열의 요소들은 메모리에 어떻게 저장될까요?

서로 떨어진 위치에 임의로 저장된다.

링크드 리스트 형태로 연결되어 저장된다.

연속적인(contiguous) 메모리 공간에 저장된다.

스택에 쌓이는 형태로 저장된다.

답변 1

1

안녕하세요~

pa = arr2d;

pa=arr2d[0];

모두 가능합니다.

arr2d 👉 첫번째 원소 (float[4]) 의 주소  = float[4] 값 (배열 이름은 배열 이름의 주소와 같죠. arr =&arr)

arr2d[0] 👉 float[4] 값

pa = &arr2d[0] = arr2d[0] = arr2d 👉 (배열 이름 = 배열 이름의 주소)

Hyeonjun Yun님의 프로필 이미지
Hyeonjun Yun

작성한 질문수

질문하기