C

상수 형태의 문자열을 가리키는 포인터

오군_ 2023. 5. 16. 15:03
반응형

str1은 문자열이 저장된 배열이다. 문자 배열이다 즉 변수성향의 문자열이다.

str2은 문자열의 주소 값을 저장한다. 자동 할당된 문자열의 주소 값을 저장한다.

따라서 상수성향의 문자열이다.

 

아래의 코드를 보면

 

str1은 다른 문자열 할당이 되지 않는다.

str2는 문자열주소를 할당받을 수 있어서

다른 문자열을 할당할 수 있다.

 

변수 성향의 str1에 저장된 문자열의 문자는 변경이 가능

상수 성향의 str2에 저장된 문자열의 문자는 변경이 불가능

char str1[] = "My String";
char* str2 = "Your String";
printf("%s %s \n", str1, str2);	// My String Your String 출력

//str1 = "Our String";	컴파일 오류발생
str2 = "Our String";
printf("%s %s \n", str1, str2);	// My String Our String 출력

str1[0] = 'X';
//str2[0] = 'X';	컴파일 오류 발생
printf("%s %s\n", str1, str2);	// Xy String Our String 출력

 

아래의 그림에서 WhoAreYou라는 함수는 char형 포인터를 매개변수로 받고

인자로 "Hong"을 넣어줍니다. "Hong"은 문자열인데 문자열은 char형 배열과 같습니다.

배열은 포인터와 호환이 되기에 인자로 전달받을 수 있습니다!

 

이미지 출처 : 윤성우의 열혈 C 프로그래밍

 

반응형

 

반응형