C语言中的指针究竟是什么!下列代码带你轻松理解指针!

首先,咱们不需要理解太多,只需要了解下面几个知识点就可以了!

什么是指针?
指针是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;
}

猜你喜欢

转载自blog.csdn.net/weixin_44001222/article/details/115801903