讨论sizeof本质原因

forestassure 2003-08-22 04:39:00
如下:
void Func ( char str[100])
{
//请计算
sizeof( str ) = ?
}
answer : 4;
如果:
char str[100];
sizeof(str)
answer : 100

请说说why?
...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2003-08-23
  • 打赏
  • 举报
回复
都让 BlueSky2008() ( ) , 看来还是半夜里面上网的同志比较多
函数传递的时候是按照指针传递参数的,所以和数组形似但是不等同。
关于和0比较的问题,各个系统的精度不同,所以那个误差定义肯定是有区别的。
但是不要忘记,float表达的数据精度,本身在小数点后只有6位精度,MSDN当中查找Floating Limits你可以看到这个说明
wbh0360 2003-08-23
  • 打赏
  • 举报
回复
void Func ( char str[100])
因为这个传送的是地址,当然4了


char str[100];
sizeof(str)
而这里就代表整个数组了

c++语法所决定
很土 2003-08-22
  • 打赏
  • 举报
回复
楼上的说得没错。
BlueSky2008 2003-08-22
  • 打赏
  • 举报
回复
第一个str是字符型指针
第二个str是字符型数组。

对第二个标准答案,说实在的,不敢苟同。
为什么 EPSINON = 0.00001,而不是0.0001 or 0.000001?
其目的大概只是想提醒人们一下float量有个最小精度问题。
bjay 2003-08-22
  • 打赏
  • 举报
回复
指针和数组的问题。

这个问题好象已经讨论了很多次了。
forestassure 2003-08-22
  • 打赏
  • 举报
回复
还有一个问题:
float x 如何与 0比较 ?

标准答案示例:
const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON)
不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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