字符串作参数的时候的sizeof问题

farrio 2006-11-14 01:41:24
如果我的函数声明是 void f01(char d[8]),
函数里面有个变量是 char b[8]。
我发现sizeof(d)和sizeof(b)的结果是不一样的,
sizeof(d)=4,sizeof(b)=8。
据说C语言会把参数转化为指针类型,这样就是一个int型的长度4了。
那么有什么办法可以知道d的真实大小呢?
...全文
133 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞哥 2006-11-14
  • 打赏
  • 举报
回复
如果是在栈上分配的空间,最好加个长度参数
因为在传入参数时 ,数组退化成了指针,sizeof就成了取指针大小
----------

在堆上分配的空间,可以使用 _msize()来搞定
hailongchang 2006-11-14
  • 打赏
  • 举报
回复
函数参数 是char d[8],实际传递的是指针,所以是4个字节

而char b[8],是数组,所以是8个字节
  • 打赏
  • 举报
回复
参数是指针
这样就好,多方便
void f01(char* p,size_t len)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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