在C中的函数参数中创建数组
Create array in a function parameter in C
这在C或C++中可能吗?我有一个函数,声明如下:
int foo(double*)
我正试图做这样的事情:
foo([] = {1.0, 2.0, 3.0, 4.0});
我知道我可以单独创建一个数组,但我很好奇我是否可以这样做。
谢谢。
在C中:使用C99复合文字:
foo((double[]){ 1.0, 2.0, 3.0, 4.0 });
在C++中:(我讨厌"C/C++"问题!)-我尝试过这个方法,并以类似的方式使用C++11初始值设定项列表。然而,我不完全相信这是合法的还是会导致未定义的行为:
foo(&(std::vector<double> { 1, 2, 3, 4 })[0])
有人能证实这一点吗?(编译时没有警告,运行……但这并不意味着任何东西,。)
是的,您可以通过复合文字来实现这一点。C99允许此功能。
foo((double[]){1.0, 2.0, 3.0, 4.0});
在本例中,复合文字创建了一个包含四个float
s的数组(动态)。
你也可以写这个
foo((double[4]){1.0, 2.0, 3.0, 4.0});
相关文章:
- 在将 new 与指针一起使用时,创建数组的指定长度
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 合并排序不排序自创建数组类 c++
- 基于参数创建数组
- 使用new创建数组而不声明大小
- c++用输入数据创建数组
- 从类 c++ 动态创建数组
- 如何使用 void 函数从类创建数组
- 未知大小的数组作为类成员,用于在运行时(对象创建时间)创建数组的对象
- 如何在不知道Arduino中知道其大小的情况下创建数组和存储值
- 使用动态分配创建数组并将元素插入其中
- 是否可以使用C 函数中的const int参数创建数组
- 如何在C++函数中创建数组
- 使用 ::std::vector 创建数组
- 在编译时以增量方式创建数组
- Numpy C API - 使用 PyArray_Descr 创建数组会导致段错误
- 为什么当我尝试在类中创建数组时"invalid use of non-static data member"我会收到错误?
- 取消引用指针以创建数组的副本
- C++ 在堆上创建数组而不对其进行初始化
- 数组的维度是在创建数组的那一刻确定的,以后不能更改的,这是真的吗?