int *ptr = 125; 가 틀린 이유에 대해 이의가 있습니다.
겨루
질문 제목 : int *ptr = 125; 가 틀린 이유에 대해 이의가 있습니다.다른 우선 선언을 고려하지 않고 int *ptr = 125; 만 보았을 때 틀린 이유가 있나요?질문 내용 :
일반적으로
#include stdint.h
int main(void)
{
int num=10; // 이와 같이 이게 있고,
int *ptr=# // 이렇게 포인터 변수 ptr에 num의 주소를 전달해주는데요
...
}
그렇지만 아래와 같이 선언했을 때, 질문이 있습니다.
int main(void)
{
int *ptr = 125;
*ptr = 10;
...
}
선언과 동시에 초기값 설정할 떈,
int *ptr = &변수명;
이렇게 한다는 걸 알고 있습니다.
문제는
int *ptr = &변수명; 에서 &변수명 부분~!
곧
int *ptr = 주소 라고 볼 수가 있습니다.
주소는 당연히 상수일테구요.
그래서 고로, int *ptr = 125; 라고 해서
정말 잘 쓴거라고 볼 수가 있습니다.
물론 일반적으로 기술 한 것이 아닌 것은 알고 있습니다.
하지만 125라는 번지의 주소로 가서 그 안에 있는 값을 충분히 참고를 할 수가 있겠죠.
거기에 변수를 정한 것이 아니기에 그 변수명은 모르지만,
이 사실 , 그 자체만 봐서는 전혀 문제가 없다고 볼 수 있는
int *ptr = 125 가 아닐까 싶은데,
잘못생각하고 있는건가요, 사실상 이 표현만 본다면 무리가 없는 건가요?
-
김애교
*ptr은 int이든, char이든 double이든 4바이트를 가지는 주소를 저장하는 포인터 변수입니다.
주소만 저장이 가능하다고 생각하시면 편합니다. -
보람
넵, 답글 감사합니다 ^^
-
다와
문법적으로는 문제가 없지만.. 런타임 에러 99%에요.ㅎ