我知道这个网站上有数以百万计的类似问题,但没有人指出我难以理解的话题.
我想为这样的整数指针分配一个整数文字:
int *p=(int []){7} //casting the literal to array so that it would return the address of first element just like string literal.
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:
括号类型后跟初始化列表是非标准显式类型转换语法.
这段代码在C中完美运行.
如果这种类型的转换在C++中是非法的,还有其他方法可以实现同样的目的吗?
语法
int *p=(int []){7};
Run Code Online (Sandbox Code Playgroud)
C99和C11都支持,但C++不支持.
C++ 11中的选项:
使用普通的旧数组.
int p[] = {7};
Run Code Online (Sandbox Code Playgroud)用一个std::array.
std::array<int, 1> p = {7};
Run Code Online (Sandbox Code Playgroud)用一个std::vector.
std::vector<int> p(1, 7);
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |