首页 > 编程语言 > 详细

C 语言中指针的指针究竟是个啥

时间:2021-04-09 23:52:09      阅读:28      评论:0      收藏:0      [点我收藏+]

C 语言中指针的指针究竟是个啥

一、前言

今天我们 QQ 群里同学写了句 a[0] = *(a+0) 这样的代码。和大家做一个分享,然后我们看看怎么回事。

二、代码

看过之前 一文让你明白 C 语言中的指针的同学,不难写出这样的代码。
技术分享图片

在这里,我们其实是定义了个指针(指向内存空间的地址)。在 一文让你明白 C 语言中的指针 里我们写到:当指针和数组彼此独立,只能依靠地址递增实现读取。

2-1 引入单指针

那么是否可以将这段代码改为这样:

技术分享图片

这边希望大家注意的是,我们将指针地址加1后取值。

然而地址并不是只是加了1,实际上是根据 int 大小,加了4个bits.

2-2 指针的指针

如此一来,也就是说 a[0] = *(a+0) 是没问题的。

我们如果在外面再套一层,写成这样子呢:a[i][j]=*(*(a+i)+j)这样似乎就变成了指针的指针。在这个过程里发生了什么?

技术分享图片

技术分享图片

指针指向了另外一个指针。指针的指针的地址是一大块区域的首地址,再根据字符类型对内存地址做增加。最终找到了正确的值。

C 语言中指针的指针究竟是个啥

原文:https://www.cnblogs.com/itxdm/p/c_pointer_of_pointer.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!