int main() {
char *a;
a = "abc";
}
이건 오류가 안뜨는데
int main() {
int *a;
*a = 3;
}
이건 초기화되지않은 지역변수 a를 사용했다고 오류가 뜨네요
int의 경우는 포인터 변수에 대한 메모리를 할당 안했으니까 오류가 뜨는게 이해가되는데
문자열의 경우는 메모리 할당을 안했는데도 어떻게 문자열을 할당하는게 가능한지가 궁금합니다
int main() {
char *a;
a = "abc";
}
이건 오류가 안뜨는데
int main() {
int *a;
*a = 3;
}
이건 초기화되지않은 지역변수 a를 사용했다고 오류가 뜨네요
int의 경우는 포인터 변수에 대한 메모리를 할당 안했으니까 오류가 뜨는게 이해가되는데
문자열의 경우는 메모리 할당을 안했는데도 어떻게 문자열을 할당하는게 가능한지가 궁금합니다
그건 니가 빡대가리인거 뿐이고
a가 포인터잖아... 문자열은 그 자체로 주소값을 가지고(메모리에 올라감) 그 문자열의 맨 처음 주소값을 포인터변수에 저장하는 거니까 가능
그런데 아래의 경우는 초기화 되지 않은 a가 가진 값의 주소에 해당하는 메모리값을 3으로 바꾸려고 하니까 문제가 생기지
문자열... - dc App
"abc"에는 주소가 있고, 3에는 주소가 없음
와 소름돋네 슈발ㅋㅋ
별커비가 무슨 제대로 설명한다고 ㅋㅋㅋ 그건 자바 vm에서 돌아가는 방식이고 스택영역에 문자열 데이터가 그대로 올라가고 문자열 차체는 첫번째 주소값으로 처리됨
처음꺼 VS2017에서 const char *형 - char *형 오류 나지 않느
ㄷㄷ