zoukankan      html  css  js  c++  java
  • c 数组做为形參时 该參数退化为指针

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/xiewenbo/article/details/34419435

    当数组做为函数的形參的时候,该參数退化为指针,而且是无法直接求得数组的大小。

    传数组给一个函数。数组类型自己主动转换为指针类型,因而传的实际是地址。
    void func(int array[10])
    void func(int array[])
    void func(int *array)
    所以以上三种函数声明全然等同。


    实际情况是,数组做參数,全然无法按值传递。

    这是由C/C++函数的实现机制决定的。

    通常计算数组大小的方式例如以下:

    int len = sizeof(arr)/sizeof(type)

    利用总长度和单个元素的长度关系得到数组的长度

    但做为形參后,sizeof(arr)的长度总为4,即一个指针的长度。

    为此,有两种方法来解决问题:

    方法1.

    參数传递的时候,直接加上一个參数做为数组的长度

    方法2.(是错误的)

    int *p = a[0];
    int iLen = 0;
    while(p != NULL)
    {
        iLen++;
        *p++;
    }

查看全文
  • 相关阅读:
    算法与数据结构(十五) 归并排序(Swift 3.0版)
    算法与数据结构(十四) 堆排序 (Swift 3.0版)
    算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
    算法与数据结构(十二) 散列(哈希)表的创建与查找(Swift版)
    算法与数据结构(十一) 平衡二叉树(AVL树)(Swift版)
    算法与数据结构(十) 二叉排序树的查找、插入与删除(Swift版)
    算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找(Swift版)
    算法与数据结构(八) AOV网的关键路径(Swift版)
    算法与数据结构(七) AOV网的拓扑排序(Swift版)
    算法与数据结构(六) 迪杰斯特拉算法的最短路径(Swift版)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10970195.html
  • Copyright © 2011-2022 走看看