p3[1] 을 출력 할 때 왜 실제값이 나오나요?
297
작성한 질문수 1
안녕하세요 판다코딩님, 강의 정말 잘 듣고 있습니다.
왜 p3[1]을 출력할 때 주소값이 아닌 실제값이 출력이 되는건가요??
포인터에서 주소값이 아닌 실제값을 출력할때는 앞에 * 이 있어야 한다고 배웠는데 여기선 *가 없어도 실제값이 출력이 되는 이유가 궁금합니다!
좋은 강의 만들어주셔서 감사합니다!
답변 2
5
안녕하세요!
강의에서 p3 이라는 포인터 변수에 new 연산자를 이용하여
메모리를 동적할당 하였습니다. 배열과 동일하게 메모리 공간에 연속적으로
할당되고 , 따라서 [ ] 를 이용하여 배열처럼 인덱스로 접근할 수 있습니다.
int a[10]; 이라고 배열을 선언한 경우에도, 배열의 이름 a는 포인터입니다.
*를 사용하여 *a, *(a+1) , ... 과 같이 접근할 수 있습니다.
이때 괄호에 주의하셔야 합니다.
*a + 1은 a가 가리키는 값을 가져와서 1을 더하는 것이고,
*(a+1)은 a의 주소값에 a 포인터 변수의 크기(=주소공간 한 칸)만큼 더한 다음
값에 접근한다는 의미이기 때문에 다음과 같이 사용할 수 있습니다.
*a == *(a+0) == a[0]
*(a+1) == a[1]
a와 a+1을 확인해보시면, 1씩 늘어나는게 아니라
포인터 변수의 크기만큼 늘어남을 알 수 있습니다.
null 문자가 포함되면 왜 뒤에 불필요한 것들이 사라지나요?
0
556
1
강의 중 궁금한게 있습니다.
0
400
0
포인터 연산 강의
0
372
1
강의중 궁금한 내용이 있습니다
2
488
3
(int*)이 어떤 원리인건지 잘 이해가 안되요 ㅜ
1
454
0
char형과 char 배열을 차이점이 뭔가요
0
386
0
오토를 맹신하지 말라는 것이 무슨 뜻인가요?
0
327
1
안녕하세요 class의 멤버함수에 관련하여 질문이 있습니다.
0
245
0
강의 잘 듣고있습니다. 그런데 소스코드에 오타가 있는듯합니다.
1
330
0
포인터를 증가시키거나 감소시킨 상태에서는 delete 사용이 불가능한가요?
0
457
0
const float PI =3.14159265; 로 선언하고 원의 넓이를 구할 때 궁금한 것이 있습니다.
0
655
1
iosteam 헤더 파일 중복
0
361
1
함수 뒤 세미콜론
0
318
0
함수는 원본이 아닌 복사본을 사용한다는 말에 대해서 질문있습니다
0
240
0
sizeof arr에서
0
411
3
포인터를 이용한 주소값이 이상합니다
0
286
1
바이트와 관련하여서 질문이 있습니다
0
256
1
출력이 안되요
0
275
0
마지막에 main.cpp 에서
1
260
0
예제코드 오타 있어요
1
201
0
함수의 대괄호 뒤에 ; 가 붙는것과 안뭍는것의 차이가 뭔가요?
0
217
0
new/delete 연산자
1
257
1
컴파일에러
1
280
1
string에서 문자열 길이
1
260
1





