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中拉出并将其传递给预期的函数,但是这种方法对我来说似乎是一个黑客能够使用我的预期功能与该表达式作为参数,这表示我认为我不应该使用该表达式作为参数,当我的预期的功能参数是单个指针,或者可能有另一种方法使用那个表达? .
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标准下?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)