将文字分配给指针

jok*_*007 5 c++ casting

我知道这个网站上有数以百万计的类似问题,但没有人指出我难以理解的话题.

我想为这样的整数指针分配一个整数文字:

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++中是非法的,还有其他方法可以实现同样的目的吗?

R S*_*ahu 8

语法

int *p=(int []){7};
Run Code Online (Sandbox Code Playgroud)

C99和C11都支持,但C++不支持.

C++ 11中的选项:

  1. 使用普通的旧数组.

    int p[] = {7};
    
    Run Code Online (Sandbox Code Playgroud)
  2. 用一个std::array.

    std::array<int, 1> p = {7};
    
    Run Code Online (Sandbox Code Playgroud)
  3. 用一个std::vector.

    std::vector<int> p(1, 7);
    
    Run Code Online (Sandbox Code Playgroud)