방금 C를 배우기 시작했고 Windows 용 MinGW를 사용하여 포인터가 작동하는 방식을 이해하는 몇 가지 간단한 프로그램을 실행 해 왔습니다. 나는 시도 다음C 포인터에 값을 직접 할당
제대로 컴파일#include <stdio.h>
int main(){
int *ptr;
*ptr = 20;
printf("%d", *ptr);
return 0;
}
하지만 실행 파일을 실행할 때 작동하지 않습니다 - 값이 명령 행에 인쇄, 대신 내가 .exe 파일이 없다는 오류 메시지가 표시되지 않는다 작동을 멈췄습니다. 잘 작동
#include <stdio.h>
int main(){
int *ptr;
int q = 50;
ptr = &q;
printf("%d", *ptr);
return 0;
}
아래에 도시 된 바와 같이 I 그 변수의 메모리 어드레스에 INT 변수에 할당 * PTR에 값을 저장하려하지만
.
제 질문은 포인터에 리터럴 값을 직접 설정할 수없는 이유는 무엇입니까? 나는 포인터에 대한 온라인 튜토리얼을 살펴 봤고 대부분은 두 번째 예제와 같은 방식으로 수행한다.
도움을 주시면 감사하겠습니다.
포인터가 초기화되지 않았으므로 프로그램을 중단시킬 수 있습니다. – Till
운이 좋으면 오류로 종료되었습니다. – JonnyRo
@JonnyRo가 맞습니다. 실제 코드에서 이런 종류의 버그는 일주일에 걸친 디버깅 세션으로 이어져 경향이 있습니다. 디버깅 세션 중에는 다른 변수가 무작위로 변경되는 이유를 알아 내려고합니다. 공개 시연) 또는 다른 사람이 다른 값을 조작하여 "is_admin"플래그를 true로 설정하는 보안 사용. – abarnert