C 언어 포인터 시리즈 (2): 포인터 와 메모리 의 관 계 를 정말 이해 하 십 니까?

C 언어 지침 은 C 언어의 영혼 이 라 고 할 수 있다. C 언어 알고리즘 이 든 데이터 구조 든 그 가 없 는 곳 이 없다.지침, 이것 은 베테랑 에 게 는 다반사 와 같은 조작 이지 만, 귀 신 앞 에 서 는 마치 만장 의 높 은 산 과 같다!
중국의 위인 이 말 한 적 이 있다.
마음 만 먹 으 면 세상 에 못 할 일이 없다!
C 언어 지침 이 투철 하 게 이해 되 지 않 는 것 은 모두 네가 공 을 들 였 는 지 안 들 였 는 지 에 달 려 있다. 그러나 더 많은 것 은 적당 한 도입부 가 있 는 지 를 보고 그 에 대한 인식 을 계몽 해 야 한다.
포인터 변수 유형 은 어떤 것 이 있 습 니까?
알다 시 피 C 언어의 기본 변수 유형 은 정형 변수, 부동 소수점 변수 와 문자 형 변수 가 있다.
기본 변수 유형
포인터 변수 형식
정형 (int)
정형 (int *)
부동 소수점 형 (float)
부동 소수점 형 (float *)
이중 정밀도 (double)
이중 정밀도 (double *)
문자 형식 (char)
문자 형 (char *)
위 에서 가장 자주 사용 하 는 몇 가지 포인터 변수 유형 을 열거 하여 저장 할 수 있 는 메모리 주소 의 중간 값 에 대응 하 는 유형 을 열거 하 였 다.
예 를 들 어 int * 형 포인터 변 수 는 int 형식의 변수의 메모리 주소 만 저장 할 수 있 습 니 다.C 언어 지침 은 바로 문 당호 대 를 중시 하 는 것 입 니 다. 학생 여러분, 그 달 에 자꾸 붉 은 선 을 끌 지 마 세 요.
C 언어 는 어떻게 포인터 변 수 를 설명 합 니까?
C 언어 에서 포인터 의 일반 성명 형식 은 다음 과 같 습 니 다.
[포인터 변수 종류]  *[포인터 변수 이름];
int * 형 포인터 변수 pt 를 설명 하려 면 다음 코드 가 있 습 니 다.
int *pt;

이 를 통 해 다른 유형의 포인터 변 수 는 더 이상 군말 하지 않 는 다.
C 언어 포인터 사용
지침 을 사용 하기 위해 c 언어 는 두 개의 특별한 연산 자 를 제공 합 니 다.
  • 주소 연산 자 &
  • 수치 연산 자 *
  • 포인터 변 수 를 정의 한 후에 해당 메모리 셀 만 포인터 의 값 을 저장 하 는 데 사 용 됩 니 다. 이 포인터 변 수 는 특정한 변 수 를 가리 키 지 않 기 때문에 지침 을 사용 할 때 도 포인터 변 수 를 초기 화 해 야 합 니 다.
    포인터 변 수 는 변수의 주 소 를 저장 하기 때문에 포인터 초기 화 는 특정한 변수의 주 소 를 부여 하 는 것 입 니 다.이 과정 은 주소 부 & 의 도움 이 필요 합 니 다.
    다음 프로그램 과 같이:
    int x=5;
    int *p=&x;
    // x     p
    

    다른 형식 으로 쓸 수도 있다.
    int x=5,*p=&x;
    

    위의 두 단락 의 코드 효 과 는 목적지 와 같다.
    p 의 값 을 출력 할 때 값 을 추출 해 야 합 니 다 *:
    printf("%d",*p);
    

    깊이 공부 하 다
    다음 프로그램 코드 가 있다 고 가정 합 니 다.
    int a=3;
    int b=5;
    int *p1=&a;
    int *p2=&b;
    p1=p2;
    

    (1) 두 개의 정형 변 수 를 설명 하고 a 의 값 은 3 이 며 b 의 값 은 5 이다.
    정형 수치 3
    변수 a
    정형 수치 5
    변수 b
    (2) 변수 a, b 의 메모리 주 소 를 각각 p1 과 p2 에 저장 합 니 다.
    변수 a
    포인터
    변수 b
    포인터
    이때 p1 은 a 를 가리 키 고 p2 는 b 를 가리킨다
    변수 a 포인터 p1 메모리 주 소 를 p1 포인터 에 게 a 변수 a 포인터 p1 을 가리 킵 니 다.
    변수 b 포인터 p 2 메모리 주 소 를 p2 포인터 에 b 변수 b 포인터 p 2 를 가리 킵 니 다.
    (3) p1 이 가리 키 는 주 소 를 p2 가 가리 키 는 주소 로 변경
    p1: F74EC7F7
    p2: F74EC7F9
    여기 서 모두 가 약간 현혹 되 었 을 수도 있 으 니 내 말 을 들 어 라.
    우 리 는 여기에서 두 문장 p1 = p2 를 구분 해 야 한다.여기 에는 수치 부호 가 없습니다. 둘 다 포인터 자체 입 니 다. p1 이 가리 키 는 메모리 주 소 를 p2 가 가리 키 는 메모리 주소 * p1 = * p2 로 변경 합 니 다.값 부 * 가 있 습 니 다. p1 이 메모리 주 소 를 가리 키 는 값 을 p2 가 메모리 주 소 를 가리 키 는 값 으로 변경 하 는 것 을 의미 합 니 다.
    p1 = p2 해상도
    실행 되 지 않 은 전:
    p1
    F74EC7F7
    p2
    F74EC7F9
    이 문 구 를 실행 하면:
    F74EC7F7
    p1
    F74EC7F9
    p2
    * p1 = * p2 해상도
    실행 되 지 않 은 전:
    p1
    F74EC7F7
    3
    p2
    F74EC7F9
    5
    이 문 구 를 실행 한 후:
    p1
    F74EC7F7
    5
    p2
    F74EC7F9
    5
                            ↓↓↓↓↓
    p1
    F74EC7F7
    5
    p2
    F74EC7F9
    5
    이제 알 겠 어 요?아니 야, 괜찮아, 아직 3 장 이 있어!
    (미 완성 계속...)

    좋은 웹페이지 즐겨찾기