int형 변수에 저장된 주소 값만을 이용해서는 해당 주소의 메모리 공간에 접근 이 불가능 하다.해당 주소의 메모리 공간에 대한 정보가 없기때문이다.
달리 말하면 int형 변수에는 해당 주소의 메모리 공간에 대한 정보가 없기 때문에 메모리 참조를 위한 *연산이 불가능하다.
라고 하는데 무슨 소리인지 이해좀 시켜줘셈
int형 변수에 저장된 주소 값만을 이용해서는 해당 주소의 메모리 공간에 접근 이 불가능 하다.해당 주소의 메모리 공간에 대한 정보가 없기때문이다.
달리 말하면 int형 변수에는 해당 주소의 메모리 공간에 대한 정보가 없기 때문에 메모리 참조를 위한 *연산이 불가능하다.
라고 하는데 무슨 소리인지 이해좀 시켜줘셈
캐스팅하면 된다는 소리임
int자체는 포인터가 아니기 때문에 * 연산자를 바로 적용할 수는 없다는 말.
설령 그안에 메모리 주소가 들어 있더라도 말이야. 그러니까 포인터로 인식하게 캐스팅 하면 됨.
그니까 포인터 변수가 아니면 *연산으로 메모리공간을 참조를 못한다는 말이지? int a = # 같이?
내가 오해한게 머냐면 char * name = ? 는 되는데 int * name =?는 안된다는 말로 이해했는데 아닌거 맞지?
그냥 int랑 int*랑 다르단 말임
그 거는 문자열 좀만 공부하면 이해할 수 있는데
char * name = ? 이 되는 이유가 char 은 1바이트? 형의 정렬제한을 가지고 있어서 그런건가?? char 이 일반포인터랑 같아서 ?
만약 char* name="abc"; 라고 치면 여기서 name은 1바이트의 'a' 한 글자를 가리키고 있어. 만약 printf("%s", name)을 부르면 a를 시작 1바이트씩 문자열을 읽어서 끝까지출력하는 거지.
문자열이 NULL값으로 끝나는 건 알지?