-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
질문이 있습니다!
20.02.26 04:39 작성 조회수 114
0
int array[] = {1,2,3};
cout<<array<<endl; 이렇게 하면 첫번째 byte의 주소가 출력되는데,
int name[] = "Jack jack";
cout<<name<<endl; 이렇게 하면 그냥 Jack jack이 출력되고,
char *ptr = name;을 한뒤
cout <<ptr<<endl;하면
name과 똑같이 Jack jack이 출력되는데
while문안에서 ++ptr은 실행이 되는데
++name은 에러가 뜨는 이유가 뭔지 궁금합니다.
또 위에서 언급했다시피 cout <<ptr<<endl; 하면
Jack jack이 출력되는데 (이는 주소값이 아닌데)
그렇다면(++ptr-1)의 의미를 잘 모르겠습니다.
(코드는 다른 질문자님의 코드를 참고했습니다.)
#include<iostream>
using namespace std;
int main()
{
char name[] = "Jack jack";
char *ptr = name;
cout << ptr << endl;
cout << name << endl;
while (true){
cout << *(++ptr -1);
if (ptr == '\0')break;
}
return 0;
}
답변을 작성해보세요.
0
호두
2020.02.26
안녕하세요?
문자의 배열일 경우에는 (대개 문자열이라는 걸 인식하고?) 주소를 출력하는 대신 NULL('\0') 캐릭터를 만날 때 까지 문자열을 출력해주는 것으로 알고있어요.
아직 강의에서 확인을 못하셨다면 이후 강의를 보다보면 설명이 있을 거예요.
감사합니다.
답변 1