코드를 다음과 같이 코딩했는데 새 주소에 값을 할당 할 수 있었지만 값을 증가시킨 후이 값을 인쇄 할 수 없었습니다. run time error
또한 값을 위치를 가리키는이 포인터, 포인터 값이 14로 변경되었습니다. 누구나 무슨 일이 일어나고 있는지 알 수 있습니까?C 프로그래밍, 포인터 런타임 오류
값 자체를 위치 자체에 할당 한 후 포인터 값 자체가 14로 변경된 이유는 무엇입니까?
포인터 값을 늘린 후에도 오류가 발생하지 않았습니다!
#include <stdio.h>
int main()
{
int x = 10;
int *ptr = &x;
printf("%x\n",ptr); // ptr value
ptr++; //No ERROR !!
printf("%x\n",ptr); //ptr value +4 bytes no error!!!
*ptr = 20;
printf("%x\n",ptr); //ptr=14
printf("%x\n",*ptr); // run time error happens here only
return 0;
}
일단 포인터를 움직이면 더 이상 유효한 위치를 가리키고 있지 않습니다. UB. –
** 오류 없음 **, 정의되지 않은 동작 **이 있습니다. **. 귀하의 코드는 정의되지 않은 동작이있는 6 개의 위치가 있습니다. –