- 首先先来说一下指针的概念
指针:简单地说就是地址(例如我们定义一个int a=10,在计算机内部会产生一个地址来存放这个变量a,在我们每一次使用这个变量a的时候,计算机就会找到这个地址并取出值,那么计算机是如何快速找到这个变量的呢。此时就引出了指针这个概念 其作用是用来指向这个变量)
数组与指针的结合使用 与 变量与指针的结合使用不同
这里需要理解:
- 当我们使用指针指向变量的时候,需要加&(取地址符)
- 当我们使用指针指向数组的时候,不需要加&(取地址符)
指针指向变量代码实例:
#include<stdio.h>
int main() {
int a,*p=&a;
scanf("%d",p);
printf("输出指针赋值变量后的值%d",*p);
return 0;
}
详解:
- 定义一个变量a,定义一个指针*p,使指针*p指向变量a的地址
- 因为scanf函数本身需要的就是地址,指针*p指向的就是地址,所以我们可以直接写成p(其实就是&*p,&*同时存在时即可抵消)
- 最后printf函数输出*p,*p指向的是变量a,也就是等价于printf("%d",a);
指针指向数组代码实例:
#include<stdio.h>
int main() {
int a[5]={1,2,3,4,5},*p=a;
++p;
printf("*(p+2)的值为:%d",*(p+2));
return 0;
}
详解:
- 定义一个数组长度为5,*p指针指向这个数组的第一个元素a[0]
- 指针的位置自增1,此时*p指针指向这个数组的第二个元素a[1](但对于指针来说,此时为p[0])
- 最后printf函数输出*(p+2),*p(p[0])指向的是数组a[1],*(p+2)也就是指向数组a[3]