🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

질문이 있습니다!

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

답변 1

답변을 작성해보세요.

0

호두님의 프로필

호두

2020.02.26

안녕하세요?

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

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

감사합니다.

채널톡 아이콘