강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

미니미니님의 프로필 이미지
미니미니

작성한 질문수

홍정모의 따라하며 배우는 C++

6.7a 널 포인터 Null Pointer

질문이 있습니다!

작성

·

159

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;
}

답변 1

0

안녕하세요?

문자의 배열일 경우에는 (대개 문자열이라는 걸 인식하고?) 주소를 출력하는 대신 NULL('\0') 캐릭터를 만날 때 까지 문자열을 출력해주는 것으로 알고있어요.

아직 강의에서 확인을 못하셨다면 이후 강의를 보다보면 설명이 있을 거예요.

감사합니다.

미니미니님의 프로필 이미지
미니미니

작성한 질문수

질문하기