책을 보다가 이런 내용이 나왓는대 햇갈립니다.
int *ptr;
...;
*ptr=10;
이건 에러 라고 합니다.
왜냐하면 *는 ptr번지의 값을 구하는 연산자이구 따라서 *ptr은 수식 이고 . 그러므로 수식에 값을 대입하는 것은 불가능 하다고 나옵니다..
그런대 종종 다른 소스프로그램을 보면 *연산자에 직접 값을 대입하는경우가 많니 나옵니다.
예를들어 *ptr=133 이라든지 등등..
근대 visual c++ 툴로 다음 소스를 컴파일 하면 에러가 나오내요?
#include<stdio.h>
void main()
{
int *ptr;
ptr=10;
printf("%d",ptr);
}
이렇게 해도 에러가 나오내요
#include<stdio.h>
void main()
{
int *ptr;
ptr=10;
printf("%d",*ptr);
이렇게 해도 에러가 나오고요
#include<stdio.h>
void main()
{
int *ptr;
*ptr=10;
printf("%d",*ptr);
}
}
그런데
#include<stdio.h>
void main()
{
int *ptr;
int t=10;
ptr=&t;
printf("%d",*ptr);
}
이렇게 하면 되더라구요..
결국 포인터 변수에 직접 주소나 값을 넣는것은 불가능 건가요?
#include<stdio.h>
void main()
{
int *ptr=2345;
printf("%d",*ptr);
}
이것도 에러나던대.. 초기화시에는 직접 값을 넣어줘도 되는걸로 알고있는데 아니였나요?
|