int main(){
char[] = 'Jack Jack";
const int_n_name = sizeof(name)/sizeof(name[0]);
//원소 갯수 구하는 방법:
// sizeof(name) : 위 char[]의 전체 메모리 사이즈
//sizeof(name[0]) = sizeof(char) : 한 원소
// 단, Jack Jack 뒤에는, 한 글자(널)이 하나 더 숨어있다
}
for (int i = 0; i<n_name; ++i)
{
cout << *(name + i);
}
return 0;
}
>>실행결과: 정적 array도, 내부적으로는 포인터.
따라서,포인터 연산이 적용되고, 마지막 공백 한 칸까지 출력
C스타일의 문자열 기호적(symbolic) 상수
int main(){
char[] = "Jack Jack";
char *name = "Jack Jack"; //에러!
//포인터에는 '값'(문자열)을 담을 수 없다. 포인터는 단지 어떠한 공간을 가리키기만 할 뿐
//포인터에는 '값'(문자열)을 담을 수 없다. 포인터는 단지 어떠한 공간을 가리키기만 할 뿐
>>But, 문자열 '기호적인 상수'처럼 사용할 수 있다. -> const 이용
앞에 const를 붙여주니, 이렇게 실행이 된다.
주소를 찍어주니, 같은 주소가 나왔다. => 컴파일러가 "Jack Jack"이 같으니까, 같은 공간 써! 하면서 같은 주소 준 것.
그럼 내용을 조금 바꿔보면
역시, 다른 주소가 찍히는거를 볼 수 있다.
const는 return type으로 쓰일 수 있다.
문자열 포인터는, 다른 타입과 달리
cout에서 문자의 포인터는 특별하게 취급한다. 문자열의 포인터는, c스타일의 문자열.배열일 가능성이 높다