| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1012 人关注过本帖
标题:数组做为函数参数
只看楼主 加入收藏
hzz063
Rank: 3Rank: 3
来 自:横县百合
等 级:论坛游侠
帖 子:80
专家分:114
注 册:2010-1-27
结帖率:100%
收藏
 问题点数:0 回复次数:4 
数组做为函数参数
好久没来了....

是这样的,把一个数组作实参传给一个函数,为什么在函数内用sizeof不能获得数组的长度呢??
如果我就想在那个函数内用sizeof来获取数组的长度能做到吗??
程序代码:
#include <stdio.h>
void fun(char array[]);
int main(void)
{
    char array[] = {"ABCD"};
    int i;
   
    i = sizeof(array);
    printf("%d\n",i);
    fun(array);

   return 0;
}

 

void fun(char array[])

{
    int i;

    i = sizeof(array);
    printf("%d\n",i);
    return ;
}
结果不一样........
搜索更多相关主题的帖子: 函数 参数 
2010-06-03 09:41
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:0 
sizeof是取不到函数数组形参的长度的。
数组参数传递的实则是指针,fun函数中,array的变量类型不再是数组,而是字符型指针,所以sizeof获得的是字符指针的变量大小,再Win32环境下,一般为4个字节。
如果函数传递数组,又想在函数内部知道数组的长度,一般会再额外添加一个参数来表示数组的长度。
2010-06-03 10:00
bnbplayer
Rank: 1
等 级:新手上路
帖 子:8
专家分:7
注 册:2010-3-27
收藏
得分:0 
函数那里传递的是形参吧。。。楼上正解
2010-06-03 21:11
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册:2007-12-27
收藏
得分:0 
二楼说过了,一切貌似数组的形参实际上都是指针变量。
因为数组名实际上是“地址常量”,从而不能被赋值,而作为形参,其使命就是接收实参的值,所以形参必须是个变量,所以貌似数组名的形参必须被编译器当作指针变量。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-06-03 21:17
kinwyb
Rank: 4
等 级:业余侠客
帖 子:134
专家分:244
注 册:2009-3-7
收藏
得分:0 
2楼正解!形参中没有数组。所谓的形参数组其实是指针变量.

学习c语言痛苦!!但是要坚持~~
2010-06-04 17:01
快速回复:数组做为函数参数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064371 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved