C 언어 포인터 개념의 상세 한 해석
다음 그림 은 4G 메모리 의 바이트 당 번호 입 니 다(16 진수 로 표시).
메모리 에 있 는 바이트 의 번 호 를 주소(Address)나 포인터(Pointer)라 고 합 니 다.주 소 는 0 부터 순차적으로 추 가 됩 니 다.32 비트 환경 에 대해 프로그램 이 사용 할 수 있 는 메모 리 는 4GB 이 고 가장 작은 주 소 는 0 이 며 가장 큰 주 소 는 0xFFFFFF 입 니 다.
다음 코드 는 주 소 를 출력 하 는 방법 을 보 여 줍 니 다.
#include <stdio.h>
int main(){
int a = 100;
char str[20] = "c.biancheng.net";
printf("%#X, %#X
", &a, str);
return 0;
}
실행 결과:0X28FF3C, 0X28FF10
%\#X 는 16 진법 으로 출력 하고 접두사 0 X 를 추가 합 니 다.a 는 정 수 를 저장 하 는 변수 입 니 다.앞 에&를 추가 하여 주 소 를 가 져 와 야 합 니 다.str 자체 가 문자열 의 첫 주 소 를 나타 내 므 로 추가&할 필요 가 없습니다.
모든 것 이 주소 입 니 다.
C 언어 는 변수 로 데 이 터 를 저장 하고 함수 로 중복 사용 할 수 있 는 코드 를 정의 합 니 다.그들 은 최종 적 으로 메모리 에 넣 어야 CPU 가 사용 할 수 있 습 니 다.
데이터 와 코드 는 모두 바 이 너 리 형식 으로 메모리 에 저장 되 어 있 으 며,컴퓨터 는 어떤 메모리 가 데이터 인지 코드 인지 형식 적 으로 구분 할 수 없다.프로그램 이 메모리 에 불 러 오 면 운영 체 제 는 서로 다른 메모리 블록 에 서로 다른 권한 을 지정 합 니 다.읽 기와 실행 권한 을 가 진 메모리 블록 은 코드 이 고 읽 기와 쓰기 권한(읽 기 권한 만 있 을 수도 있 습 니 다)을 가 진 메모리 블록 은 데이터 입 니 다.
CPU 는 메모리 에 있 는 코드 와 데 이 터 를 주소 로 만 가 져 올 수 있 으 며,프로그램 은 실행 과정 에서 CPU 가 실행 할 코드 와 읽 고 쓸 데이터 의 주 소 를 알려 줍 니 다.프로그램 이 잘못 되 었 거나 개발 자가 의도 적 으로 데 이 터 를 쓰 려 고 할 때 코드 영역의 주 소 를 주면 메모리 접근 오류 가 발생 합 니 다.이러한 메모리 접근 오 류 는 하드웨어 와 운영 체제 에 의 해 차단 되 고 프로그램 이 무 너 지 며 프로그래머 가 구 할 기회 가 없다.
CPU 가 메모리 에 접근 할 때 필요 한 것 은 변수 이름과 함수 이름 이 아 닌 주소 입 니 다!변수 이름과 함수 이름 은 주소 의 보조 기호 일 뿐 원본 파일 이 실행 가능 한 프로그램 으로 컴 파일 되 고 링크 되면 주소 로 대 체 됩 니 다.컴 파일 과 링크 과정의 중요 한 임 무 는 이 이름 에 해당 하 는 주 소 를 찾 는 것 이다.
변수 a,b,c 가 메모리 에 있 는 주소 가 각각 0X 1000,0X 2000,0X 3000 이 라 고 가정 하면 덧셈 c=a+b;다음 과 같은 형식 으로 변 환 됩 니 다:
0X3000 = (0X1000) + (0X2000);
()값 추출 작업 을 표시 합 니 다.전체 표현 식 은 주소 0x 1000 과 0x 2000 의 값 을 추출 하여 추가 한 결 과 를 0x 3000 의 메모리 에 할당 한 다 는 뜻 입 니 다.
변수 이름과 함수 명 은 코드 를 작성 하 는 과정 에서 읽 기 쉽 고 이해 하기 쉬 운 영어 문자열 을 사용 할 수 있 도록 편 의 를 제공 합 니 다.바 이 너 리 주 소 를 직접 마주 하지 않 아 도 됩 니 다.그 장면 은 정말 무 너 집 니 다.
주의해 야 할 것 은 변수 명,함수 명,문자열 명 과 배열 명 은 본질 적 으로 같 지만 모두 주소 의 보조 기호 이지 만 코드 를 작성 하 는 과정 에서 변수 명 은 데이터 자 체 를 나타 내 고 함수 명,문자열 명 과 배열 명 은 코드 블록 이나 데이터 블록 의 첫 주 소 를 나타 낸다 고 생각 합 니 다.
프로그램 메모리,컴 파일 링크,실행 가능 한 파일 의 구조 와 이름 에 해당 하 는 주 소 를 어떻게 찾 는 지 에 대해 저 희 는 과 주제 에서 깊이 연구 할 것 입 니 다.
이상 C 언어의 지침 에 대해 상세 하 게 소 개 했 습 니 다.추 후 관련 자 료 를 계속 보충 하 겠 습 니 다.여러분 의 본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 구현 천둥 제거 게임 상세 정보먼저 작은 메뉴를 표시하고 게임을 할지 여부를 선택하십시오.사용자가 종료를 선택하면 프로그램 실행이 끝나고, 사용자가 게임을 선택하면 지뢰 제거 위치 좌표를 입력하라는 메시지가 표시됩니다.사용자가 입력한 좌표가 바둑...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.