c언어 질문입니다

kimsunboy의 이미지

#include <stdio.h>
 
int main()
{
  int a=3;
  int *p;
  p=(int*)a;
  printf("%d",p);
}

포인터에 변수의 값을 넣어서 포인터를 변수처럼 출력을 할수 있도록 해 보고 싶었습니다.
그런데

warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
이러한 워닝이 뜨더군요...

왜 그런건가요?
그리고

  int a=3;
  int *p;
  p=(int*)1+a;

은 워닝이 안 뜨던데 이유가 무엇인가요??

세벌의 이미지

p=(int*)1+a;
p=(int*)a;
는 다르니까요.
Warning 뜨더라도 그게 하려는 바가 맞다면 진행하시면 됩니다. 그 책임은 개발자께서...
kimsunboy의 이미지

아 기본적인걸 까먹고 있었네요..
감사합니다!