这句为何输出4?

li_guang_hua 2005-07-08 04:43:44
#include "iostream.h"
#include "string.h"


void Func(char str[100])
{
cout<<sizeof(str)<<endl;
}



void main()
{

char ch[100];
Func(ch); //这句为何输出4
}

...全文
248 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy_bin 2005-07-09
  • 打赏
  • 举报
回复

嗯!

学习一下!
alwaysfreeboy 2005-07-09
  • 打赏
  • 举报
回复
#include "iostream.h"
#include "string.h"


void Func(char str[100])
{
cout<<sizeof(str)<<endl;
}



void main()
{

char ch[100];
cout<<sizeof(ch)<<endl;//输出100
Func(ch); //输出4
}
传的是指针

Jagen在路上 2005-07-09
  • 打赏
  • 举报
回复
除非使用的引用,那么就是100了
这样
void Func( char (&str)[100])
{
cout<<sizeof(str)<<endl;
}
li_guang_hua 2005-07-09
  • 打赏
  • 举报
回复
谢谢大家!!!
manuever 2005-07-09
  • 打赏
  • 举报
回复
楼上的都分析的对!
zhouhuahai 2005-07-09
  • 打赏
  • 举报
回复
数组做参数传递的时候,将退化成指针

如果需要数组长度.有两种方案:
1.再提供一个int 参数,显式提供数组长度.
2.在函数体内用strlen(),得到字符串长度(仅限于字符串,不能用于其它数组).
flyingdancing2005 2005-07-08
  • 打赏
  • 举报
回复
已解...
suiyun 2005-07-08
  • 打赏
  • 举报
回复
正确
K 2005-07-08
  • 打赏
  • 举报
回复
楼上说的对
whatsouta 2005-07-08
  • 打赏
  • 举报
回复
STR是指针
这种情况用strlen。
jackie2003 2005-07-08
  • 打赏
  • 举报
回复
数组做参数传递的时候,将退化成指针。
支持观点
guogangj 2005-07-08
  • 打赏
  • 举报
回复
学到,看来以后涉及到数组参数的时候要注意了。
firstdreamer 2005-07-08
  • 打赏
  • 举报
回复
diandian82(点点) 正解!
diandian82 2005-07-08
  • 打赏
  • 举报
回复
数组做参数传递的时候,将退化成指针。
thisisyjs 2005-07-08
  • 打赏
  • 举报
回复
str 是个32位的指针,就是4byte了。
rongstar 2005-07-08
  • 打赏
  • 举报
回复
为什么不能是4?说明用4个字节存储字符

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧