首先,咱们不需要理解太多,只需要了解下面几个知识点就可以了!
什么是指针?
指针是C语言中的一种功能,很强大,很有用
怎么定义一个指针?
首先必须知道*是间接访问符,&是取地址符(顾名思义就是得到这个变量的地址)
int *d=&a;
咱定义了一个指针变量d,d(注意没有带星*号)指向a的地址,*d可以访问到a这个地址里面的具体数值
指针的作用是什么?
指针可以通过地址直接修改这个地址中的值,如最下面的代码所示
int a=100;
//表示d声明的类型是int指针,d中存储的是一个存储单元的地址,而该存储单元中存储的数据是一个整型数值
//*d=&a,表示指针指向存储单元a上的数据
int *d=&a;
//就可以用*d来代替a来使用,d是一个指针变量,可以通过间接访问符*来访问这个地址里面的数值,即*d=100
指针一般作用在哪?
主要用于数组
#include<stdio.h>
int main(void)
{
int a=100;
//表示d声明的类型是int指针,d中存储的是一个存储单元的地址,而该存储单元中存储的数据是一个整型数值
//*d=&a,表示指针指向存储单元a上的数据
int *d=&a;
//就可以用*d来代替a来使用,d是一个指针变量,可以通过间接访问符*来访问这个地址里面的数值,即*d=100
//C语言为了消除二义性,如上表示,a表示存储单元的数据,即100,&a表示存储单元的地址
printf("a的数据:%d\n",a);
printf("a的地址:%d\n",&a);
printf("d代表的意思是a的地址:%d\n",d);
//下面用指针,*d代表的也是a的值
printf("指针指向a的数据:%d\n",*d);
//printf("%d",*a);报错
//出现这个illegal indirection的原因一般是在非指针量之前加上了“*” 符号
//下面是个应用指针的例子
//首先我们明白,*d的值是100,然后105-100=5,所以*d=5,也可以说a=5
//左值是一个可以存储结果值的地点,注意!是地点
//所以d所指向的地址a把右值得到的计算结果作为它的新值
//即a的数据变了,变成了5,但a的地址没有变,左值是一个可以存储数据的地址
//该例子侧面说明了通过指针去修改a的值
*d= 105- *d;
printf("*d的值:%d a的值:%d a的地址:%d\n",*d,a,&a);
printf("最后看一下a+*d会是什么结果:%d",a+*d);
return 0;
}