07:30 int *ptr=&arr[0][0]; 질문있습니다.
329
작성한 질문수 1
2 차원 배열 첫 주소를 포인터에 대입해서 출력할 때
강의를 보면서 들던 생각은 어째서 %d 로 값을 출력하는데
asterisk 를 사용하지 않는지? 그리고 어떻게 포인터에 indexing 을 배열처럼 사용할 수 있는지 궁금합니다.
그리고 포인터에 배열을 사용하지 않고
#include <stdio.h>
int main()
{
int arr[2][3] = { 1,2,3,4,5,6 };
int* ptr = &arr[0][0];
for (int k = 0; k < 6; k++)
printf("%d\n", *(ptr+k));
return 0;
}이 코드처럼 asterisk 를 사용하여 주소 값에 자료형만큼 더하는 것과 어떤 차이가 있나요?
답변 1
3
안녕하세요, 답변 도우미 Soobak 입니다. 😀
질문1.) 2 차원 배열 첫 주소를 포인터에 대입해서 출력할 때 강의를 보면서 들던 생각은 어째서 %d 로 값을 출력하는데 asterisk 를 사용하지 않는지?
: 우선, 강의 10.4 포인터와 배열 의 3:33 부분에서 교수님께서 설명해주시듯이, "배열의 이름은 배열이 사용할 수 있는 메모리 공간을 대표하는 메모리 주소" 이며, "내부적으로는 포인터와 비슷" 하여 포인터처럼 쓸 수 있습니다. 또한, C 언어에서 [ ] 연산자를 통해 인덱싱이 다음과 같은 방식으로 이루어집니다.
(1). 포인터에서 인덱스 안의 값을 더합니다. 이렇게 하면 원하는 요소의 메모리 주소로 이동합니다.
(2). 해당 메모리 주소를 참조하여 값을 가져옵니다.
예를 들어서, 포인터 int* ptr 이 배열의 첫 번째 요소의 주소를 가리키므로, ptr[2] 는 *(ptr + 2) 와 동일한 의미를 가집니다. 이런 방식으로 포인터에 대해 배열 인덱싱을 사용하여 값에 접근할 수 있는 것 이에요.
질문2.) 포인터에 배열을 사용하지 않고 이 코드처럼 asterisk 를 사용하여 주소 값에 자료형만큼 더하는 것과 어떤 차이가 있나요?
: 동일한 결과를 출력하며, 표기법만 다릅니다. *(ptr + k) 로 표기하면 포인터 연산과 포인터의 참조에 대한 것을 명확하게 나타낼 수 있으며, ptr[k] 방식은 배열의 인덱싱 표기법을 사용하여 보다 간결하게 코드를 표현할 수 있습니다.
추가적으로, 현재 진도 이후 10.13 포인터의 배열과 2차원 배열 에서 메모리 동적 할당에 대하여 학습하실 때, 교수님께서 보다 자세히 설명해주시므로 참고 부탁드립니다. 특히, 강의 10.13 포인터의 배열과 2차원 배열 의 4:36 부분의 자료화면을 참고하시면 포인터 참조와 배열 인덱싱에 대해 이해하시는 데에 도움이 되실 것 같습니다.
또 궁금하신 점 있으시면 편하게 질문 남겨주세요. 감사합니다. 👍
Export template 안됨
1
45
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
70
3
main 함수에서 왜 int만 선언이 되는걸까요
1
63
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
62
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
58
1
프로토타입과 함수간의 인자 불일치
1
81
2
12.12 헤더 관련 질문
1
63
2
Visual Studio Community 2026 사용 문의
1
149
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
65
2
getchar(), putchar()
1
96
3
강의자리ㅛ
1
85
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
119
2
소스파일안에 여러 파일
1
80
2
F5와 F7의 차이
1
82
2
c = TWO * (a+b); 에서 a와 b는?
1
63
2
; 세미콜론을 붙이는 기준에 문의
1
72
1
Step over 기능 문의
1
57
2
2.6 강의 따옴표 출력 규칙 문의
1
81
2
int main 함수 관련 오류 문의
1
71
2
13.4 words[0]
0
64
2
11.7 함수를 구현해 봤습니다.
1
65
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
67
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
57
2
11.6 fit_str함수를 구현해 봤습니다.
1
56
2





