C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我们可以通过这种语法将数组作为参数传递给函数,在即将到来的c 0x标准下?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我们有以下功能
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标准下?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。