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

静态数组的大小

如何解决《静态数组的大小》经验,为你挑选了2个好方法。

我声明一个静态char数组,然后我将它传递给一个函数.怎么得到没有.函数内部数组中的字节数?



1> j_random_hac..:

使用具有非类型模板参数的函数模板:

template 
void func(char (&a)[N]) {
    for (int i = 0; i < N; ++i) {
        cout << "a[" << i << "] = " << a[i] << endl;   // Or whatever you want to do
    }
}

致电:

char myArray[500];        // Or "static char myArray[500]", if you want
func(myArray);

这个函数的新副本将针对调用它的每个不同大小的数组进行实例化,因此如果你用许多不同大小的数组调用它,你会得到一些代码膨胀.但事实并非如此.


@fmuecke:在这种情况下,最好去编译时 - 参见[this question](http://stackoverflow.com/q/1500363/168225).

2> Paul Dixon..:

你必须将它传递给函数.您可以使用sizeof()来获取数组的大小.

const char foo[] = "foobar";

void doSomething( char *ptr, int length)
{

}


doSomething(foo, sizeof(foo));

这个MSDN页面解释了有关sizeof的更多信息,并有一个更大的例子.

编辑:*请参阅j_random_hacker关于使用模板的有趣技术的答案 ......*


@brainfck:......不.请参阅http://msdn.microsoft.com/en-us/library/0w557fh7(VS.80).aspx进行确认.
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有