我们可以通过这种语法将数组作为参数传递给函数,在即将到来的c 0x标准下?

我们可以通过这种语法将数组作为参数传递给函数,在即将到来的c 0x标准下?,第1张

概述假设我们有以下功能: void someFunction(int * araye){ for (int i=0;i<5;i++) cout <<araye[i]<<' '; cout <<'\n';} 我们可以通过以下语法数组传递给此函数,在即将到来的c 0x标准下? : someFunction({1,2,3,4,5}); 如果是这样,我们甚至可以在任何情况下使用这种语法,其中数组元 假设我们有以下功能:
voID someFunction(int * araye){ for (int i=0;i<5;i++)  cout <<araye[i]<<' '; cout <<'\n';}

我们可以通过以下语法将数组传递给此函数,在即将到来的c 0x标准下? :

someFunction({1,2,3,4,5});

如果是这样,我们甚至可以在任何情况下使用这种语法,其中数组元素来自POD类型,如下所示:

class Test{ int adad1; int adad2;};voID someFunction(Test * araye){ for (int i=0;i<3;i++)  cout <<araye[i].adad1<<'-'<<araye[i].adad2<<' '; cout <<'\n';}someFunction({{1,2},{3,4},{5,6}});

编辑 – >之后人们说:
所以你们告诉说,大括号之间的表达式将被基本对待为initializer_List,并且提出使用一个额外的函数,将一个指针从该initializer_List中拉出并将其传递给预期的函数,但是这种方法对我来说似乎是一个黑客能够使用我的预期功能与该表达式作为参数,这表示我认为我不应该使用该表达式作为参数,当我的预期的功能参数是单个指针,或者可能有另一种方法使用那个表达? .

解决方法 如果你的函数使用const int *而不是int *,那么你只需要一个小的蹦床函数来将指针从std :: initializer_List< int>大括号初始化器生成.这样的东西(可能;我没有一个C 0x编译器来测试)
voID someFunction(const int * array){    for (int i=0; i<5; i++)        std::cout << array[i] << ' ';    std::cout << '\n';}voID someFunction(const std::initializer_List<int>& init) {    someFunction(init.begin());}someFunction({1,5});

如果您的函数需要知道数组的结尾或大小(通常是这种情况),则将init.end()或init.size()作为第二个参数传递.

总结

以上是内存溢出为你收集整理的我们可以通过这种语法将数组作为参数传递给函数,在即将到来的c 0x标准下?全部内容,希望文章能够帮你解决我们可以通过这种语法将数组作为参数传递给函数,在即将到来的c 0x标准下?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存