C 언어 학습 노트 (2)

I. 포인터 배열

1. 테이블 포인터 함수 파라미터들의 어레이는 실제로

sizeof(a) == sizeof(int * );
int a[ ] ⇔ int *a
다음 네 함수 프로토 타입은 동일합니다 :

  • 당신은 (당신이있는 거 N, * AR) 요약;
  • 당신은 합계 (당신이 [아칸소], 당신이있는 거 N);
  • INT 합 (INT *를 INT);
  • INT 합 (INT [], INT);

2. 배열 변수는 특별한 포인터

  • 배열 자체가 주소를 나타냅니다,
    • int로 A [10];
    • INT * P = A; // & 변수를 취할 필요가 없습니다
  • 셀 어레이의 발현을 어드레스하기위한 변수, 및 필요하다.
  • [] 오퍼레이터가 배열 할 수 있으며, 포인터 할 수
    P를 [0] ⇔ A [0]
  • * 연산자는 포인터를 사용하여 배열 될 수있다;

  • CONST 배열 변수는 포인터 타입, 따라서 변화는 할당 될 수 없다;
    INT A [] ⇔ CONST INT * B 단계;

    II. 포인터 산술

    (1) 포인터 감산 정수 - (-, + =, = +) 추가
    (2) 증가 감소 (+, -),
    (3) 두 개의 포인터를 감산하는 단계;

1. 수정 된 항목 :

  • 즉 더한 포인터 값 더하기를 sizeof (포인터 형)에 의해 지시 된 어드레스에 대한 포인터는 다음 셀로 이동한다.
  • 포인터 - 1 셀 (2)의 방향과의 차이의 어드레스가 아닌 값의 결과 사이의 차이이다
    (포인터 1-- 포인터 2) /를 sizeof (포인터 형);

2. * P ++

  • P 참조되는 데이터를 제거한 후, p는 다음 셀로 이동한다;
  • 공간 기반 연속 동작의 어레이;
  • 직접 어셈블러 명령으로 변환 할 수있는 CPU에서는;

포인터를 비교합니다

  • <! <= ==>,> =, = 포인터와 비교 될 수있다 (비교 메모리 어드레스);
  • 어레이의 어드레스가 직선적으로 증가한다.

4.0 주소

  • 0 주소는 일반적으로 임의의 주소를 터치 할 수 없습니다;
  • 포인터는 0의 값을하지 말았어야;
  • 일반적으로 0 주소와 함께 특별한 일을 표현 :
    • 잘못된 값을 반환;
    • 포인터는 실제로 초기화되지 않았습니다.
  • NULL은 미리 정의 된 상징 인 주소를 나타냅니다 0

포인터 유형

  • 아니 포인트의 유형, 모든 포인터의 크기를 중요, 동일 모든 주소 때문에;
  • 할당이 서로 직접하지의 포인터는 다른 종류의 지적, 이것은 잘못된 손을 사용하지 않도록하는 것입니다.

6. 포인터 동작

  • 인수로 전달하면 큰 거래를 필요로;
  • 작업을 수행하는 배열의 어레이를 통과 한 후에;
  • 기능은 더 하나 개의 결과보다 반환
  • 하나 개의 변수 기능보다 더 많은 수정해야합니다;
  • 동적 응용 프로그램 메모리.

내 손으로 쓴 노트


MOOC 코드

발생하는 문제

1. * P ++ 의미

해상도 : * +, 다음에 P 포지션 후에 취출 값 P의 레벨 아래 단항.

추천

출처www.cnblogs.com/ABClazyboy/p/12443542.html