안녕하세요. 궁금증연구소입니다.
오늘 포스팅 주제는 "[c++] string.begin()의 포인터와 string name의 포인터는 다르다."입니다.
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
main()
{
string name = "abc";
printf("%d\n", name);
printf("%d", name.begin());
}
c++에서는 string 객체를 제공합니다. 따라서 c에서 존재하는 문자열을 다루는 어려움이 많이 해소됩니다.
string객체의 메서드 중에는 begin() 메서드가 존재하는데, 객체에 저장된 문자열의 첫 번째 위치(포인터)를 리턴해줍니다.
위 예를 보면 name string 객체에 문자열 abc를 저장 후, begin()을 출력하고 있습니다.
주의할 점은, string 객체의 이름 자체가 가리키는 주소와 begin()이 리턴하는 주소는 다르다는 점입니다.
보통 문자열 배열에서는 char str [100]이라고 한다면,
첫 번째 문자열의 주소는 문자열의 이름인 str에 저장되어 있지만, string의 경우는 다릅니다.
이를 착각하면 안 되는 이유는 for_each, copy_if, transform 등의 함수 사용에 있어, 배열의 포인터를 매개변수로 넘겨야 하기 때문입니다.
끝~
cmd창에서 파일 한꺼번에 옮기는 방법 (0) | 2022.11.21 |
---|---|
[c++] 생성자 호출 시점 (0) | 2022.09.24 |
[c++] Default argument value redeue redeclared for parameter 에러 (1) | 2022.09.21 |
[c++] 배열의 sizeof 연산자 구할때 주의할점(매개변수 sizeof와 차이) (2) | 2022.09.19 |
[C언어]Suspicious pointer conversion 에러 (0) | 2022.09.10 |