-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
질문이 있습니다!
20.02.26 05:06 작성 조회수 135
1
강의10:34부분처럼 cout<<name+i<<endl;
으로 출력을 해보았는데,
아래의 결과처럼 출력이 되었습니다.
여기서 혼란이 왔는데
char name[] = "Jack jack";에서 name은
int array[] = {1,2,3};에서 array와는 약간 다른 의미를 가지는 건가요??
(array는 출력하면 첫번째 byte의 주소를 출력하지만,
name은 출력하니까 그대로 "Jack jack"이 출력되었습니다.)
다시말해서
name+1 => ack jack,
*(name+1) => a가 되는 이유가 궁금합니다.
(ack jack을 d-reference하면 a가 되는 이유가 궁금합니다.)
#include<iostream>
using namespace std;
int main()
{
char name[] = "Jack jack";
const int n_name = sizeof(name) / sizeof(char);
for (int i = 0; i < n_name; ++i) {
cout << name + i << endl;
}
return 0;
}
Jack jack
ack jack
ck jack
k jack
jack
jack
ack
ck
k
답변을 작성해보세요.
1
홍정모
지식공유자2020.03.03
C언어 관련 오해가 생기기 쉬운 부분입니다. cout은 '편의상' 문자의 포인터를 문자열처럼 출력하려고 시도합니다. 나중에는 std::string을 사용하시면 더 편합니다. 포인터 연산은 동일하지만 출력 때문에 헷갈리셨을 수도 있겠네요.
답변 1