| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1159 人关注过本帖
标题:sizeof array name 和 sizeof pointer
只看楼主 加入收藏
mehere
Rank: 1
来 自:Wuhan
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-7-14
收藏
 问题点数:0 回复次数:3 
sizeof array name 和 sizeof pointer
int main(void)
{   int a[5]={1,3,2,4,5};
    array(a+2);
    printf("%d %d\n",sizeof(a);   //这里是数组大小=20
    system("pause");
    return 0;
}

void array(int x[])
{   *(x+3)=8;
    printf("%d inside\n",sizeof x);  //这里就只有4了
}

a传给array虽然是call by reference 但是它指向的是个数组啊   为什么长度就变成了一个指针的大小?

或者说 在 main() 里面   array 也是个指针啊   怎么就有20个长度呢?(这句话只是和上句话对比   它有20个长度好理解~~~)

先谢了
搜索更多相关主题的帖子: name sizeof pointer array 
2010-01-31 22:14
神秘人
Rank: 2
等 级:论坛游民
帖 子:19
专家分:38
注 册:2010-1-31
收藏
得分:0 
当数组作为参数传递给函数,它就成了一个彻彻底底的指针。
而主函数中的数组名,它并不是一个彻底的指针,与指针有2个区别。
1.取地址运算符& 2.sizeof操作。

人不知而不愠,不亦君子乎?
2010-01-31 22:22
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
sizeof没记错的话求变量名、常量、数据类型在存储单元所占字节数
2010-01-31 22:28
mehere
Rank: 1
来 自:Wuhan
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-7-14
收藏
得分:0 
以下是引用神秘人在2010-1-31 22:22:51的发言:

当数组作为参数传递给函数,它就成了一个彻彻底底的指针。
而主函数中的数组名,它并不是一个彻底的指针,与指针有2个区别。
1.取地址运算符& 2.sizeof操作。
原来是“彻底”的缘故啊~~~

谢谢了
2010-01-31 23:29
快速回复:sizeof array name 和 sizeof pointer
数据加载中...
 
   



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

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