专栏首页C语言入门到精通基础知识 | 每日一练(64)

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

基础知识练习

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

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

有什么区别呢?

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

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

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

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

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

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

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

本文分享自微信公众号 - C语言入门到精通(gh_780327809188)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基础知识 | 每日一练(63)

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

    C语言入门到精通
  • 5.1 数组的顺序表示和实现

    1、数据结构中最基本的一个结构就是线性结构,而线性结构又分为连续存储结构和离散存储结构。所谓的连续存储结构其实就是数组。

    C语言入门到精通
  • 5.1 一维数组

    C语言入门到精通
  • 不看技术文,还想不想去腾讯了

    今天的内容主要是讲解指针数组。这部分内容实际上是要结合数组指针一起讲的,但是由于篇幅的问题,只能拆成两篇来写。今天这篇介绍指针数组,下一篇介绍数组指针。

    谭庆波
  • Java中的数组(基础篇六)

    在学习数组之前我们先来了解一下容器,生活中的容器比如水杯是用来装水的,衣柜是装衣服的,Java中的容器是用来存储数据的,将多个数据存储到一起,每个数据称为该容器...

    故里
  • 剑指 offer代码解析——面试题29数组中出线次数超过一半的数字

    题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 分析:本题最直观的思路就是分别统计数组中每个数出现的次数,然后求出最大值,判断是否超过...

    大闲人柴毛毛
  • Java漫谈6

    今天这篇想聊聊数组。 在聊数组之前先聊个别的,如果想在Java中实现一个 数字-月份 转换,那我该怎么做呢?就比如数字1代表了一月份,数字2代表了二月份…数字1...

    用户1335799
  • 科幻电影看多了 碰到多维数组 请冷静一下

    说在前面的话:其实越是基础的知识,讲起来难度越大,因为越是基础,它就越偏向底层,你看得到的知识就那么多,但是你看不到的地方有大量的你暂时不需要知道的知识,所以只...

    用户5745563
  • 数组

    1、 一维数组的定义和使用 通过对前面知识的学习,我们已经知道如何定义和使用一个一个的各种变量,但总有不够用的时候。举个例子,我要记录一个班32个同学C语...

    编程范 源代码公司
  • Excel VBA解读(153): 数据结构——基本的数组操作

    创建了一个可以容纳6个Long型数据的数组,第一个元素的索引值为0,最后一个元素的索引值为5,如下图1所示。

    fanjy

扫码关注云+社区

领取腾讯云代金券