포인터는 메모리 어딘가에 저장된 자료를 가리키는 용도로 쓰는거다. strcpy는 배열에 있는 값들들 복사해주는 함수인데 포인터는 값을 담는 용도가 아니기 때문에 불가능한거다.
실생활로 비유하면 길을 알려주는 표지판이 있는데 여기에 물건을 보관할 수 있냐? 없다. 길을 안내해주기 위해 만든거지 물건을 보관하는 창고랑은 완전 다른 물건이잖아?
익명(175.223)2018-11-29 13:16
답글
니는 지금 금고나 창고를 멀쩡하게 냅두고 여기에 물건을 보관할 생각을 안하고 표지판에도 물건을 담을 방법 없을까? 하는거랑 똑같은거야
익명(175.223)2018-11-29 13:17
답글
따라서 값들 담는 용도로 쓰는 것에 값을 넣어줘야 맞는거고 이건 상식이지? 이 상식을 프로그래밍에 대입해봐. 값을 담는건 변수와 배열 그리고 포인터가 가리키는 할당된 주소의 공간이야. 여기에 담아줘야지
익명(175.223)2018-11-29 13:18
답글
포인터로 임의 할당 된 주소의 공간을 가리켜서 값을 넣는다는 개념이 어렵다면 앞에서 비유한 표지판에 창고의 위치를 알려준다고 생각해봐라.
비록 표지판 자체에는 물건을 보관할 수 없지만 물건을 보관할 수 있는 길들 알려주잖아. 그 길을 따라가서 나온 창고에 물건을 보관하면 된다.
익명(112.161)2018-11-29 13:21
답글
이거랑 관려있는거임..?
김숙자(hoomnyarita2)2018-11-29 13:23
너가 chat *str = "ABC"한건 컴파일할때 프로그램에 이미 들어가게돼있어
김숙자(hoomnyarita2)2018-11-29 13:20
그말은, 저 str포인터는 데이터영역에 잡혀있단거임
김숙자(hoomnyarita2)2018-11-29 13:21
근데 문자열은 실행파일에 상수로 잡혀있음 읽기전용이된게맞음
김숙자(hoomnyarita2)2018-11-29 13:22
답글
그렇군요.. 그럼 위에 놈이 말한 포인터가 몇바이트를 가르키는지 몰라서 못바꾸는게 아니였던거죠?? 안에 내용물이 상수로 고정되서 안되는걸로 이해하면 되는거죠?
카더라
외않되는거야?
병신아 되겠냐? 포인터 변수가 몇바이트를 가르키는지 알고 거따가 씨발련아 문자열을 처박아 씨발 포인터변수가 문자 배열 담는 변수냐?? 하 ~ 이 씨부랄것들 진짜 공부 똑바로 쳐 안할랭? 짱나게시리;
외몰라 char * 붙여줬잖아 썅ㄴ년아
ㅋㅋ - dc App
char *str = (char*)malloc(sizeof(char) * 4); strcpy(str, "XXX"); printf("%s\n", str); return 0; 이러면되겠지 이래도 이유를 모르겠어??
#include <string.h> 안써도돼요??
저도 프린이라 물어보는것
헤더파일 때문에 나는 오류가 아닌거같네요ㅠㅠ
아니 저건 원래안되는거임;
2d말고3d님 말처럼 포인터에 문자열 바로넣게하면 저렇게 그냥 픽스됨..
왜 픽스가 되는거죠..? 읽기전용이 되버리는건가요? ㅠㅠ
그리고 막줄이 내가하고싶은말임 씨발 제대로좀하셈;;
포인터는 메모리 어딘가에 저장된 자료를 가리키는 용도로 쓰는거다. strcpy는 배열에 있는 값들들 복사해주는 함수인데 포인터는 값을 담는 용도가 아니기 때문에 불가능한거다. 실생활로 비유하면 길을 알려주는 표지판이 있는데 여기에 물건을 보관할 수 있냐? 없다. 길을 안내해주기 위해 만든거지 물건을 보관하는 창고랑은 완전 다른 물건이잖아?
니는 지금 금고나 창고를 멀쩡하게 냅두고 여기에 물건을 보관할 생각을 안하고 표지판에도 물건을 담을 방법 없을까? 하는거랑 똑같은거야
따라서 값들 담는 용도로 쓰는 것에 값을 넣어줘야 맞는거고 이건 상식이지? 이 상식을 프로그래밍에 대입해봐. 값을 담는건 변수와 배열 그리고 포인터가 가리키는 할당된 주소의 공간이야. 여기에 담아줘야지
포인터로 임의 할당 된 주소의 공간을 가리켜서 값을 넣는다는 개념이 어렵다면 앞에서 비유한 표지판에 창고의 위치를 알려준다고 생각해봐라. 비록 표지판 자체에는 물건을 보관할 수 없지만 물건을 보관할 수 있는 길들 알려주잖아. 그 길을 따라가서 나온 창고에 물건을 보관하면 된다.
이거랑 관려있는거임..?
너가 chat *str = "ABC"한건 컴파일할때 프로그램에 이미 들어가게돼있어
그말은, 저 str포인터는 데이터영역에 잡혀있단거임
근데 문자열은 실행파일에 상수로 잡혀있음 읽기전용이된게맞음
그렇군요.. 그럼 위에 놈이 말한 포인터가 몇바이트를 가르키는지 몰라서 못바꾸는게 아니였던거죠?? 안에 내용물이 상수로 고정되서 안되는걸로 이해하면 되는거죠?
착각하셨나봄
char *str = "ABC"는 사실상 const char *str = "ABC"이기 때문임 "ABC"가 const
감사합니다
ㅋㅋㅋㅋ 근데존나웃기네 ㅋㅋㅋ답변달면 쌍욕갈기네 ㅅ. ㅂ
C++이면 경고뜰건데 C라서 당했다
이거 컴파일러가 경고 때리지 않나?