16강 2:17
3
15 câu hỏi đã được viết

char *ptr_a=a;
int *ptr_b=b;
왜 위와 같이 배열의 주소를 a, b로 선언한건지? 선언을 해야 하는건지? 이해가 안 가요
저렇게 되면 ptr_a의 메모리 주소는 a, ptr_b의 메모리 주소는 b가 되는거니까 출력할때 각각 a,b가 나올 줄 알았는데, 배열의 첫번째 요소로 되니까 헷갈려요ㅠ
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. 가보자고님.
질문해주신 C 언어의 포인터와 배열 주소 관계에 대해 풀어서 설명드릴게요.
포인터와 배열의 관계:
- 배열의 이름(예:
a또는b)은 배열의 첫 번째 요소의 주소를 나타냅니다. 즉,char *ptr_a = a;라는 선언은ptr_a를 배열a의 첫 번째 요소를 가리키도록 합니다.
- 이런 식으로
int *ptr_b = b;도 배열b의 첫 번째 요소를 가리킵니다.
- 배열의 이름(예:
포인터 사용의 의미:
- 포인터
ptr_a또는ptr_b가 배열의 첫 번째 요소를 가리키기 때문에,*ptr_a나*ptr_b로 접근하면 첫 번째 요소의 값을 가져옵니다.
- 이를 통해 포인터 연산을 하면 포인터가 다음 요소를 가리키도록 위치가 이동하면서 배열의 다른 요소들에 쉽게 접근할 수 있습니다.
- 포인터
포인터 증감 연산:
- 포인터를 증가시키면
ptr_a++또는ptr_b++와 같이 포인터가 다음 요소의 주소로 이동하게 됩니다. 예를 들면,ptr_a가 초기에는a[0]을 가리켰다면,ptr_a++후에는a[1]의 요소를 가리키게 됩니다.
- 따라서
printf("%c\n", *ptr_a);와 같이 사용하면 현재 위치의 요소 값을 출력합니다.
- 포인터를 증가시키면
피해야 할 혼동:
- ptr_a와 ptr_b 자체는 주소를 보관하지만, *ptr_a와 *ptr_b는 각각 그 주소의 실제 값을 가져오는 것입니다.
- 잘못된 출력 결과는 포인터가 가리키는 위치를 이해하지 못했을 때 발생할 수 있습니다.
관련 자료 및 비슷한 경우에 대한 추가 설명은 다음 링크를 참고하세요:
- 포인터와 배열의 관계 이해하기
- 배열의 첫 번째 인덱스 이해
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
부모 및 자식 생성자 출력 관련
0
5
1
부모 및 자식 생성자 출력
0
5
2
9강 35분경 질문있습니다
0
21
2
11강 3:20
0
22
2
10강 11:42
0
20
2
9강 26:23
0
29
2
9강 23:46
0
26
2
코드 중간에 . 붙은건 뭐라고 봐야할까요?
0
35
2
설명중 단어 의미 해석 문제.
0
25
1
수강 섹션마다 옆에 자료 다운로드 버튼이 있는데. 다운받으면 무슨내용이 있는건가요?
0
20
1
SQL 집중학습
0
40
1
NULL과 0
0
40
2
26년 1회 기출문제 11번 질문드립니다
0
43
1
업캐스팅 문제예시5 & 업캐스팅 문제 예시 6
0
43
2
V1.2 VS V.091
0
48
2
split('T')일때는 T만 제거되는거고 공백은 제거되지 않는 건가요?
0
50
2
파이썬 언어 업데이트, 언어별 학습자료 업데이트
0
48
2
C, java, python 언어 기출문제 강의 질문
0
52
2
1:26 에서 반복문 i[1] 이니까 0 다음 두번째 항목들 아닌가요
0
49
2
d
0
45
2
출력값
0
43
2
(기출) 2023년 3회 코드해석 문제의 1:10입니다.
0
50
2
23년도 2회 c언어 0:03 n[(i+6)%5] 도 가능한건가요?
0
50
2
정처기 질문
0
53
2

