main(){
char * pstr = "asd";
char * qstr = (char *)&"asd";
char * tstr = (char *)&&"asd";
}
질문이다.
char * 형 변수에 "asd" 와 &"asd" 그리고 &&"asd"를 강제캐스팅 하여 넣었다.
pstr == qstr이며, printf(%s\n,pstr);printf(%s\n,qstr); 과 결과는 같다.
하지만 char * tstr = (char *)&&"asd" 문구는 오류가 나는데
왜 "asd " == &"asd" 이고 또 &&"asd"는 오류가 나는지 설명할수 있냐?
갤분위기를 봐라. 고수가 잇겠냐?
아 근데 백왕이 아까 알려줫다 포인터는 지시자랜다. 자세한건 나도 모른다
ㄴ좆문가아냐? 버로우탓자너
&& < 이거 AND 논리 연산자 아님?
ㄴ 함정이긴한대; &(&"asd"); 로 바꿈
메모리 주소의 메모리 주소가 말이 됨?
내가 바로 포인터의 고수야!
저건 포인터를 괴ㅡ상하게 다루고 있기 때문에 컴파일러마다 다를수 있음. 설명 끝!
ㄴ 시발정답이노;
오 찍었는데 맞춤 개이득 ㅅㅅ 동네사람들 이것보세요! 제가 포오인터 문제를 맞췄어요!
http://www.soen.kr/lecture/ccpp/cpp1/11-4-1.htm
이 곳을 참고했습니다. 문자열 상수는 문자형 포인터 상수로 취급된다고 하네요. 포인터로 취급된다면 포인터에 담긴 값은 주소값입니다 == "abcd" 의 경우입니다. &를 붙인다면 포인터의 주소를 내놓습니다. "abcd" 자체가 포인터죠. 포인터의 주소와 담고있는 주소가 같기 때문에 저 행동이 허용되는 것인가?... &(&"abcd")를 하면 포인터의 주소값에 &를 하는 게 됩니다. 이건 명백히 오류네요.