当前位置:  开发笔记 > 编程语言 > 正文

结果大小不同

如何解决《结果大小不同》经验,为你挑选了2个好方法。



1> Nick Retalla..:

因为你不能将整个数组作为C中的函数参数传递.你实际上是在向它传递一个指针; 括号是句法糖.无法保证您指向的数组大小为8,因为您可以将此函数传递给您想要的任何字符指针.

// These all do the same thing
void foo(char cvalue[8])
void foo(char cvalue[])
void foo(char *cvalue)



2> DrPizza..:

C和C++数组不是第一类对象; 你不能将数组传递给函数,它们总是衰减到指针.

但是,您可以传递指针和数组引用.这可以防止数组边界衰减.所以这是合法的:

template
void foo(const T(&arr)[N])
{
    int n = sizeof(arr);
}


你需要更多upmods来获得聪明的解决方案.
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有