예를 들어 char에 대한 포인터가 int에 대한 포인터와 어떻게 다른지 이해하지 못합니다.
int a = 10;
int *b = &a;
printf("%d\n", *b); // print 10
char* d = "Hello";
printf("%d\n", (int) *d); // print 72, ASCII of H
여기 "안녕하세요"가 뭐죠? 모든 문자가 int에 대한 주소이므로 "Hello"가 주소 배열입니까?
그들이 모두 주소를 가지고 있다고 생각한다면 ...
차이점은 10 바이트의 메모리가 있다고 가정합니다.
---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
---+---+---+---+---+---+---+---+---+---+
1 2 3 4 5 6 7 8 9 10
이제 char 크기가 1 bye이고 int가 4 바이트라고 가정합니다.
int의 크기가 4 바이트라는 것을 알고 있으므로 가져 와서 보여줍니다.
char와 유사하게 1 개의 위치 값을 얻고 표시합니다.
이제 포인터도 마찬가지로 요청 (역 참조) 할 때 고려해야 할 사항을 알아야합니다.
그것이 어디에 int*
있고 char*
다릅니다. 그렇지 않으면 둘 다 주소가 있습니다. 그리고 a char*
를 사용 하면 정수의 모든 바이트를 얻을 수 있지만 이는 사용자의 오버 헤드입니다.
타입에 대한 포인터는 기본적으로 포인터가 현재 위치에서 메모리에서 얼마나 이동해야하는지 그리고 디 레퍼런스 될 때 포인팅 주소에서 응시하는 바이트의 양을 알려줍니다.
char *d= "Hello"
메모리의 읽기 전용 부분에 "Hello"를 배치하고이를 포인터로 지정하면이 메모리에 대한 쓰기 작업이 불법이됩니다.
또한 C에서 "hello"에는 char [] 유형이 있습니다. 그리고 배열은 자동으로 첫 번째 요소의 주소로 변환 될 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다