前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(64)

基础知识 | 每日一练(64)

作者头像
小林C语言
发布2019-07-25 14:42:01
2500
发布2019-07-25 14:42:01
举报

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

学生:既然数组引用会蜕化为指针, 如果 arr 是数组, 那么 arr 和 &arr 又

有什么区别呢?

小林:区别在于类型。在标准 C 中, &arr 生成一个 “T 型数组” 的指针, 指向整个数组。在 ANSI 之前的 C 中, &arr 中的 & 通常会引起一个警告, 它通常被忽略。在所有的 C 编译器中, 对数组的简单引用(不包括 & 操作符)生成一个 T 的指针类型的指针, 指向数组的第一成员。

学生:我如何声明一个数组指针?

小林:通常, 你不需要。当人们随便提到数组指针的时候, 他们通常想的是指向它的第一个元素的指针。考虑使用指向数组某个元素的指针, 而不是数组的指针。

类型 T 的数组蜕变成类型 T 的指针, 这很方便; 在结果的指针上使用下标或增量就可以访问数组中单独的成员。

而真正的数组指针, 在使用下标或增量时, 会跳过整个数组, 通常只在操作数组的数组时有用 —— 如果还有一点用的话。

如果你真的需要声明指向整个数组的指针, 使用类似 “int (*ap)[N];” 这样的声明。其中 N 是数组的大小。

如果数组的大小未知, 原则上可以省略N, 但是这样生成的类型, “指向大小未知的数组的指针”, 毫无用处。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档