본문 바로가기

강의자료/C/C++

024. 문자열을 저장하는 포인터와 배열.

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


문자열을 포인터에 저장할 때와 배열에 저장할 때의 차이점을 이해하자.
#include 
using namespace std;

void main()
{
	// 포인터변수는 오로지 주소만 저장하므로 무조건 4byte이다.
	// 포인터변수는 문자열 저장을 위한 메모리 공간을 할당받지 못하므로 컴파일러가 대신하여 할당받아준다.
	char* a = "안녕하세요";
	char* b = "안녕하세요";

	// 배열은 문자열의 크기에 맞춰서 메모리 공간을 확보한다.
	char c[] = "MBC 아카데미";
	char d[] = "MBC 아카데미";
	
	cout << hex;
	cout << "0x" << (int)a << endl;
	cout << "0x" << (int)b << endl;
	cout << "0x" << (int)c << endl;
	cout << "0x" << (int)d << endl;

	if(a == b) 
		cout << "a와 b는 같은 주소값을 가지고 있다." << endl;
	else
		cout << "a와 b는 다른 주소값을 가지고 있다." << endl;

	if(c == d) 
		cout << "c와 d는 같은 주소값을 가지고 있다." << endl;
	else
		cout << "c와 d는 다른 주소값을 가지고 있다." << endl;
}