c 数组作为形參时 该參数退化为指针

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

当数组作为函数的形參的时候,该參数退化为指针,并且是没法直接求得数组的大小。css

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


实际状况是,数组作參数,全然没法按值传递。
数组

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

一般计算数组大小的方式例如如下:post

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

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

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

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

方法1.blog

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

方法2.(是错误的)

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

相关文章
相关标签/搜索