zoukankan      html  css  js  c++  java
  • 纠正<c专家编程>231页错误 | 函数返回数组

    在<c专家编程>中第230--231页,讲述了使用指针返回一个数组的方法

    文章首先要求声明一个函数,这个函数描述成 返回一个指向包含20个int元素的一维数组的指针。

    int (*fun())[20];

    这个声明没有错,编译可以通过。

    但是在函数实现的时候,书上如下

     1 int (*fun())[20]
     2 
     3 {
     4 
     5   int (*pear)[20];
     6 
     7   pear = calloc(20,sizeof(int));
     8 
     9   return pear;
    10 
    11 }

    编译时报错!

    因为calloc返回一个int*的类型,而我们的pear是一个指向一整个数组的类型即(int (*)[20])型,所以需要进行强转!

    具体实现如下

    编译成功且正常运行!

    ---------------------------------------------------------------------------------------------------

    另:很多人会对这个函数声明形式感觉奇怪,如果该函数需要参数,那如何写?在上图我已经给出了具体形式。不过这种形式很少见,最好不要这样写,这是【20】

    引发的一个噱头!

    ------------------------------------------------------------------------------------------------------

    对于第57页的

    char (*j)[20];
    
    j=(char (*)[20])malloc(20);

    j 是 一个指向具有20个char类型的数组的指针,看过这个的人,很快就能找出 上述出错的解决方法!

  • 相关阅读:
    word2vec原理推导与代码分析
    vim 删除
    HanLP 配置与使用
    python import 其他 package的模块
    mysql 修改root密码
    Spring Boot 整合 PageHelper
    MyBatis SQL语句构建器
    webpack4
    MySql DCL数据控制语言(对用户权限的设置)
    MySql DQL数据查询语言
  • 原文地址:https://www.cnblogs.com/coversky/p/7350739.html
Copyright © 2011-2022 走看看