면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
코드에서 첫보기
#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *p1=&a[0];
int *p2=a;
//int *p3=&a;//报错
int (*p3)[5]=&a;
printf("&a[0]=%X\na=%X\n&a=%X",p1,p2,p3);//以16进制输出变量内存地址
}
출력 :
알 수있는 바와 같이, 쉽게 볼, A [0]하는 , & A 발현 동일한 어드레스이지만 어레이를 저장 및 포인터를 사용한다.
:의 코드 한 쌍의 디버그 뷰를 살펴 보자
포인터의 배열이 무엇인지에 대해 먼저 이야기? ; 배열 포인터 본질적 포인터 배열 어드레스 포인터를 가리키고 , 배열의 길이는 3 차원이 상기 수 P3 ()의 우선 순위가 높은 우선 P3 정수의 1 차원 배열에 대한 포인터 스텝 크기. P + 1, P는 데이터 길이가 n의 정수를 교차 할 때 실행된다.
다음은 포인터 변수를 수행 우리는 하나씩 증가 :
#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *p1=&a[0];
int *p2=a;
//int *p3=&a;//报错
int (*p3)[5]=&a;
printf("&a[0]=%X\na=%X\n&a=%X",p1,p2,p3);//以16进制输出变量内存地址
printf("\n******************\n");
p1++;
p2++;
p3++;
printf("&a[0]=%X\na=%X\n&a=%X(在首地址下再增加4个元素*4字节共16字节数)",p1,p2,p3);//以16进制输出变量内存地址
}
출력 :