【C 语言】进阶指针 Three
🚩write in front🚩
🔎Hello,大家好我是謓泽,一起共同学习,多多指教(●'◡'●)🔎
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🖊
📢2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家 ^ 星级博主~掘金⇿InfoQ 创作者~周榜 77»总榜 1479👋
🔥 数组是首元素地址但有②个例外
①. sizeof(数组名) - 数组名表示整个数组,计算的是整个数组大小,单位是字节。
🔥注意:sizoof(数组名)这个是必须要单独存放的才算是表示数组的整个大小!
②. &数组名 - 数组名表示整个数组,取出的是整个数组的地址。
除了上述这两个,sizeof(数组名) 和 &数组名 其它的表示都是数组名(arr)首元素的地址。
💥 数组指针的使用
💥注意: 使用数组指针的时候一般都不会在一维数组当中去使用!通常都是在二维数组中使用
大家可以思考下这是为什么,你可以试着去看看数组指针的形式在去思考🤔
那就假设我们先在一维数组当中去使用下,如下代码所示 👇
上述代码👆,就是配合数组指针去使用的,可能小伙伴们看了会觉得很不自在我也觉得是,明明就可以用指针变量解决的一道题目,却还要用数组指针去解决。
指针变量解决,如下代码所示 👇
这样岂不是更方便吗?😜
接下来,我们来正确的使用数组指针。 如下代码所示 👇
编译运行结果 👇
💥注意:二维数组的数组名表示首元素的地址,第一行是二维数组首元素地址!因为是一维数组的地址,所以在形参当中使用了指向一维数组指针来去进行使用。而这样的一维数组+i 的话相当于找到了第 i 行当中的地址,解引用相当于拿到了第 i 行的数组名。这又相当于这①行首元素的地址,然后再+上 j 的话就相当于 j 的地址。最后,再括起来解引用,就找到了第 i 行下标为 j 的地址进行引用 🥳
🌀 复杂类型说明
这是一个普通的整型变量。
首先从 p 处开始,先与 * 结合,所以说明 p 是一个指针, 然后再与 int 结合, 说明指针所指向的内容的类型为 int 型。所以 p 是一个返回整型数据的指针。
首先从 p 处开始,先与 [] 结合,说明 p 是一个数组, 然后与 int 结合, 说明数组里的元素是整型的, 所以 p 是一个由整型数据组成的数组。
首先从 p 处开始, 先与 [] 结合,因为其优先级比 * 高,所以 p 是一个数组, 然后再与 * 结合, 说明数组里的元素是指针类型, 然后再与 int 结合, 说明指针所指向的内容的类型是整型的, 所以 p 是一个由返回整型数据的指针所组成的数组。
首先从 p 处开始, 先与 * 结合,说明 p 是一个指针然后再与 [] 结合(与"()"这步可以忽略,只是为了改变优先级), 说明指针所指向的内容是一个数组, 然后再与 int 结合, 说明数组里的元素是整型的。所以 p 是一个指向由整型数据组成的数组的指针。
首先从 p 开始, 先与 * 结合, 说是 p 是一个指针, 然后再与 * 结合, 说明指针所指向的元素是指针, 然后再与 int 结合, 说明该指针所指向的元素是整型数据。由于二级指针以及更高级的指针极少用在复杂的类型中, 所以后面更复杂的类型我们就不考虑多级指针了, 最多只考虑一级指针。
首先 pa 和 [] 进行结合了, pa 所接收的数组是 10 个。这里的 pa 是一个存储数组指针的数组,该数组能够存放 10 个数组指针,每个数组指针能够指向①个数组,数组⑤个元素,每个元素是 int 类型。
版权声明: 本文为 InfoQ 作者【謓泽】的原创文章。
原文链接:【http://xie.infoq.cn/article/19d16fad1f6eab6defcc8a45f】。文章转载请联系作者。
评论