내가 c++개초본데 말이야..
보통 정수배열같은거 만들고 cout으로 배열명 출력하면 배열주소 나오잖아
근데 문자열은 cout으로 문자열명 출력하면 그 문자열 자체가 나오잖아;
이거 원리좀 자세히 설명해줄형있음??? 참고로 c++언어본색으로 공부하고 있는데 책에
'문자열은 문자배열에 저장되어 있으므르로 시작 주소를 표시하면 자동으로 문자 배열에서 '\0'이 나타나기 전까지 값을 처리한다..'이런식으로
써놨는데 씨1발 내가 머리가 딸려서 그게 먼소린지 아무리 봐도 이해가 안돼..
프리렉 사이트들어가서 강의 찾아봐도 씨1발년이 책이랑 똑같은 소리만 해대는데 뭔소린지도 모르겠고 씨1발
이건 오버로딩 개념인데 그거 배울때까지는 알려고하지 않는게 나음. 머리아프니
그렇게 되라고 << 연산자를 만들어놓은건데
포인터의 타입을 보고 char*이면 문자열로 가정하고 출력 이 이외의 경우에는 void*로 가정하고 주소를 정수로 출력
그건또 먼소리지;
왜 그런지 생각하지 말고 현상을 봐
편하게 쓰라고 만들어 놓은거야. double add(int a, intb) {} double add(double a, double b){} 하는게 addInt, addDouble 하는것보다는 편하잖아.
연산자도 마찬가지임
근데 이건 좀 논외이긴한데 문자열이름이 결국 문자열 자체를 의미하는건 아니죠??
cout하면 출력되는거하곤 관계없이 문자열이름도 결국 포인터는 맞음??
아니 문자열이 포인터죠
그럼 정수배열로 캐스팅하고 출력해보던가
int num2[5] = { 1,2,3,4,5 }; cout << num2l;
출력값:003EFCDC
응? VS도이제 initalizer list지원함?
문자열 자체가 뭔데
그냥 배열아님?? 하나하나씩 쓰면 귀찮으니까 정수배열처럼 한번에 쓰려고만드는거.
문자열이니까 정수대신 문자쓰는거..정도? 밖에모르겠음;
아 그리고 예를들어서 char str[2]라는 문자열 있으면 문자열이 str임?
C++에서 문자열을 표현하는 방법은 (대충 말해서) 1. C에서 쓰던 char[] (char 배열) 2. std::string 타입 이 두가지임. 니가 알고 있는게 1번이라 가정하겠음. 배열의 이름은 포인터다 이거 C언어에서 맨날 나오는 얘기임.
char 배열의 이름은 char 포인터다 즉 char*
아
그러면 문자배열 선언할때 *쓰고 선언해야하는거에여?? char *str[2] 이렇게??
배열은 일종의 포인터..