有关C语言指针的详细理解

在学习数据结构的过程中,在用到各种表的时候,经常离不开指针。

当初学习C语言的时候指针这块就理解的不够透彻,导致现在复习数据结构写相关代码还是用数组模拟来实现。如此一来,失去了真正学习数据结构的意义。

那么今天我又重新温习了指针,那么现在让我来一起学习下指针的相关操作。

我们可以这样形象的理解:小黄谈了个女朋友,他又很抠门,只好恬不知耻的对他对象说:“我周末了去你宿舍…”。那肯定不能同意啊!!!,但是奈何小黄脸皮厚,最终通过一系列措施得到了他对象的房间号。
以上纯属瞎编。想说的就是房间号就是相当于地址,那么小黄要找的是他对象,他对象就相当于一个元素,就需要通过房间号来定位他对象在哪。
所以得先有房间号(地址),才好方便后面的事情

& //取地址符,顾名思义就是得到一个变量的地址
* //指针

我们先来理解下普通变量跟指针变量的区别:

普通变量:存储实际的值
指针变量:存储具有实际值的变量的地址。

我们来看这样的一段代码如下:
在这里插入图片描述
1.我们定义了两个变量,一个是整形变量n,一个是指针变量p。
2.我们通过先给整形变量n赋值,然后取n的地址(用取地址符号&),然后把n的地址赋值给p。那么指针p里面存的就是n的地址。
3.然后我们打印。第一次打印时我们对p没有加上*。我们可以看出打印结果为n的值 以及 p存储的地址。第二次我们对p加上*得到的是p所指向的n的值。
4.那么通过代码就很容易理解了。

我们指针变量p里面存储的是n的地址。
我们可以说:p指向n及p->n

// * 是一个单目运算符,用来访问指针的值所表示的地址上的变量。
//可以用来做右值,也可以用来做左值
int k = *p;
*p = k + 1; 

接着我们来看下面一段代码:

在这里插入图片描述我们在函数内修改了*P的值,却发现n的值变了。这是为什么呢?
因为我们的函数穿进来的参数是一个地址,然后我们用指针访问的话实际就是n的值。

那么对于一个数组来说,其实也是用指针访问的。
数组变量是特殊的指针

//数组变量本身表达地址,所以
int a[10];
int *p = a;//无需用&取地址
//但是数组的单元表达的是变量,需要用&取地址
 a == &a[0];
 //[]运算符可以对数组做,可以对指针做
 p[0] <==> a[0];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值