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

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

基础知识练习

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

学生:当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了。

小林:数组蜕化为指针的规则不能递归应用。数组的数组 (即 C 语言中的二维数组) 蜕化为数组的指针, 而不是指针的指针。数组指针常常令人困惑, 需要小心对待。

如果你向函数传递二位数组:

int array[NROWS][NCOLUMNS];

f(array);

那么函数的声明必须匹配:

void f(int a[][NCOLUMNS])

{ ... }

或者

void f(int (*ap)[NCOLUMNS]) /* ap 是个数组指针 */

{ ... }

在第一个声明中, 编译器进行了通常的从 “数组的数组” 到 “数组的指针” 的隐式转换; 第二种形式中的指针定义显而易见。因为被调函数并不为数组分配地址, 所以它并不需要知道总的大小, 所以行数 NROWS 可以省略。但数组的宽度依然重要, 所以列维度 NCOLUMNS (对于三维或多维数组, 相关的维度) 必须保留。如果一个函数已经定义为接受指针的指针, 那么几乎可以肯定直接向它传入二维数组毫无意义。

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C语言 | 每日基础(35)

    阿一:数组蜕化为指针的规则不能递归应用。数组的数组 (即 C语言中的二维数组) 蜕化为数组的指针, 而不是指针的指针。数组指针常常令人困 惑, 需要小心对待。

    C语言入门到精通
  • 基础知识 | 每日一练(63)

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

    C语言入门到精通
  • 8.6 指针数组和多重指针

    1、一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。

    C语言入门到精通
  • C语言 | 每日基础(35)

    阿一:数组蜕化为指针的规则不能递归应用。数组的数组 (即 C语言中的二维数组) 蜕化为数组的指针, 而不是指针的指针。数组指针常常令人困 惑, 需要小心对待。

    C语言入门到精通
  • C语言(函数指针和指针函数)

    经翻阅小学五年级语文课本得知,一个短语中的最后部分,是这个短语的中语,其余部分是定语(修饰语)。也就是说,以上短语相当于:

    用户2617681
  • 数组Array

    https://docs.microsoft.com/zh-cn/office/vba/language/glossary/vbe-glossary#array

    xyj
  • 指针数组和数组指针

    指针数组 :就是指针的数组,数组的元素是指针;  数组指针:就是指向数组的指针。 简单举例说明:     int *p1[10];    声明了一个数组,数组的...

    lpxxn
  • Java SE | 每日作业卷day04

    定义一个长度为3的一维数组,给每个元素赋值. (要求数组中每个元素的值是0-9的随机数),遍历数组打印每个元素的值。

    剑走天涯
  • 互联网创业,为什么要跟马化腾走

    商业与生活|xiaopeizhu8 文|朱晓培 今年的乌镇大会上,除了例行的丁磊饭局,又多了一个“东兴局”。据说是京东刘强东和美团王兴请客,但坐在中间的是腾讯马...

    企鹅号小编
  • WPF 获取应用的所有窗口

    在 WPF 可以通过 Application.Current.Windows 列举应用的所有窗口

    林德熙

扫码关注云+社区

领取腾讯云代金券