指向整数数组的指针的初始化

时间:2014-01-04 17:38:43

标签: c++

我在C ++中有以下疑问。 我们知道我们可以在声明时初始化指针,如下所示:

int *p = new int(8)
cout<<*p<<endl;

这将产生8的输出。类似地,如果我们声明一个指向整数数组的指针:

int *p = new int[10];

这可以初始化为:

p[0] = 7
p[1] = 9;

但有没有办法在声明点初始化?

5 个答案:

答案 0 :(得分:3)

使用c ++ 11可以使用大括号初始化:

int *p = new int[10] { 7, 9 };  // And so on for additional values past the first 2 elements

答案 1 :(得分:1)

Yo可以使用“{}”,如下所示:

int main()
{
   int *p = new int[10]{1,2,3,4,5,6,7,8,9,10};

   cout << p[7] << endl;
   return 0;
}

输出为8,对应于数组的位置7.

注意:它是基于c ++ 11的解决方案。

答案 2 :(得分:0)

是的,例如,如果你想将数组初始化为1,2,3,4,你可以写:
int [] myarray = {1,2,3,4}

答案 3 :(得分:0)

是的,你可以这样做

int *p = new int[3] {4,5,6};

答案 4 :(得分:0)

正如其他人所说,您可以使用C ++ 11列表初始化{}

或者您可以重载new []并使用数组进行初始化,如下所示:

#include <iostream> 

void* operator new[](std::size_t sz, int *arr)
{
    void* p = operator new[](sz);
    int *ptr= (int *)p;
    std::size_t i=0;

    for(;i<sz;++i)

       ptr[i] = arr[i];

    return p;
}

int main()
{

    int arr[] ={1,2,3,4,5,6,7,8};
    int* p = new( arr) int[8];

    for(int i=0;i<8;i++)
     std::cout<<p[i] << std::endl;

    delete[] p;
}