首先,咱们不需要理解太多,只需要了解下面几个知识点就可以了!
什么是指针?
指针是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; }