반응형

포인터 변수는 해당 변수의 주소를 가리킨다고 배웠다.

말 그대로이다.

 

이를 간단히 정리하면 아래와 같다.

int num = 3;
int *ptr = #

printf("num: %d", ptr);		// num변수가 저장된 주소를 가리킨다.
printf("arr: %d", *ptr);	// num에 저장된 값인 3을 반환한다.
printf("arr: %d", &ptr);	// ptr변수의 주소를 반환한다.

 

그럼 포인터변수 ptr에 다른 변수의 주소값을 지정하려면 어떻게 해야할까?

아래 코드를 살펴보자.

	int num1 = 3;
	int num2 = 6;
	int* ptr = &num1;
	printf("ptr: %d\n", ptr);	// num1의 주소값을 반환한다.
	printf("*ptr: %d\n", *ptr);	// num1의 변수 값을 반환한다.
	printf("&ptr: %d\n\n", &ptr);	// ptr변수의 주소값을 반환한다.

	ptr = &num2;
	printf("ptr: %d\n", ptr);	// num2의 주소값을 반환한다.
	printf("*ptr: %d\n", *ptr);	// num2의 변수 값을 반환한다.
	printf("&ptr: %d\n", &ptr);	// ptr변수의 주소값을 반환하며 이는 위와 같다.

변수의 주소가 저장되는 포인터변수 p에 다른 변수의 주소를 할당해줌으로서 위와 같은 결과를

확인할 수 있다.

 

 

그럼 const char *p = "Hellow" 로 지정되는 문자열 상수는 어떻게 이해할 수 있을까?

 

위와 같이 포인터변수 p에는 문자열 "Hellow"를 담고있는 주소값이 저장된다.

그럼 포인터변수 p가 다른 문자열을 가리키게 하려면 어떻게 해야할까?

 

이럴 경우 다른 문자열의 값을 p에 할당해주면 된다.

 

	const char *p = "Hello";
	printf("string1: %s\n", p);
	
	p = "Good Bye";
	printf("string2: %s\n", p);

위의 코드에서 p = "Good Bye" 로 지정해주는 과정을 통해

p변수에는 "Good Bye"라는 문자열의 시작 주소가 담기게 된다.

 

int형의 경우 &변수 를 통해 포인터변수에 주소값을 지정해주어야 했지만

문자열의 경우 단순히 문자열을 지정해주면 해당 문자열의 주소값이 대입되는 것으로 보인다.

 

반응형

+ Recent posts