본문 바로가기
C, C++

[c/c++] 여러개의 포인터 변수 한번에 선언하기

by hong0 2022. 9. 5.
반응형

c와 c++에서 여러개의 포인터 변수를 한번에 선언하는 경우 주의해야 할 사항이 있다.

 

예를 들어,

아래와 같이 포인터(*)를 char*와 같이 선언하고 두개의 변수를 한번에 선언해보자.

char* str1 = NULL, str2 = NULL;

#include <stdio.h>

int main(void) {
	char* str1 = NULL, str2 = NULL;
	
	printf("str1 : %d\n", sizeof(str1));
	printf("str2 : %d\n", sizeof(str2));
	return 0;
}

결과는 아래와 같이 8과 1이 출력된다.

자료형의 크기를 출력하여 변수의 크기를 알아 볼수 있는데, str1은 8 byte로 포인터지만 str2는 char 자료형의 크기인 1 byte가 출력된 것을 볼 수 있다. 

참고로 포인터 크기는 64bit 운영체제에서 compile 한 경우에는 8 byte가 되고, 32bit 운영체제에서 4byte가 된다.

str1 : 8
str2 : 1

 

즉, 포인터를 한번에 선언할 때는 위와 같이 선언하면 안되고 아래와 같이 선언해야한다.

char *str3 = NULL, *str4 = NULL;

#include <stdio.h>

int main(void) {
	char *str3 = NULL, *str4 = NULL;
	
	printf("str3 : %d\n", sizeof(str3));
	printf("str4 : %d\n", sizeof(str4));
	return 0;
}

결과는 아래와 같이 두개의 포인터 변수가 8 byte로 포인터로 각각 선언되었음을 확인할 수 있다.

str3 : 8
str4 : 8

 

포인터 변수를 한번에 선언하는 경우에는 *(Asterisk, 아스테리스트)를 각 변수 앞에 붙여야 의도한 바와같이 올바르게 선언하여 사용할 수 있다.

반응형

댓글