2012-08-30 5 views

답변

7

, 당신은 쓸 수 있습니다 :

int *pArrayNum = new int[3]{4, 3, 3}; 

그러나, 배열에 새로운 초기화가 허용되지 않습니다; C++ 03에서

int rgArrayNum [] = {16, 2, 77, 40, 12071}; 
int *pArrayNum = new int[sizeof rgArrayNum/sizeof rgArrayNum[0]]; 
std::copy(&rgArrayNum[0], &rgArrayNum[sizeof rgArrayNum/sizeof rgArrayNum[0]], 
    pArrayNum); 
+1

인 '[3]'이; 이니셜 라이저 목록에서 크기를 유추하지 않습니다. –

+0

@ecatmur : 귀하의 코드를 시도하고 "copy (int [5], int &, int * &) '호출에 대한 일치하는 함수가 없습니다." #include 을 추가했습니다. 내가 진실이 아니 었던가? – URL87

+0

@ URL87 두 번째 매개 변수에 '&'를 잊어 버렸습니다. 결정된. – ecatmur

3

및 이전 버전에서는 제로를 제외하고 아무것도 동적 배열의 값을 초기화 할 수 없습니다 당신은 스택에 배열에서 개별적으로 또는 복사하여 멤버를 초기화해야 할 것이다.

당신은 C++ 11에서 비슷한 얻을 수 있습니다

int *pArrayNum = new int [3] {4, 3, 3}; 

또는 당신은 당신을 위해 메모리를 관리하는 컨테이너를 사용 괜찮다면 :

std::vector<int> array = {4, 3, 3}; 
+2

'vector'는 의심의 여지없이 우수한 답이지만'new int [3] {4, 3, 3}; 컨테이너없이 실제로 할 수 있습니다. 나는 왜 누군가가하고 싶어하는지 알지 못한다. –

+0

@ R.MartinhoFernandes : 그렇게 할 수 있습니다. 나는 오늘 무언가를 배웠다. –

+0

@ R.MartinhoFernandes : 예를 들어 볼 때 동적 요소의 수를 의미합니다. – URL87

0

당신은 만들 필요를 정수가 아니라 정수 포인터를 가진 배열.

int* rgArrayNum2 [] = {new int(16), new int(16), new int(16), new int(16), new int(16)}; 

//test 
int* test = rgArrayNum2[2]; 
*test = 15; 

지금 rgArrayNum2 [2] 당신은해야합니다 (15)

+0

OP가 원하는 것이 확실하지 않습니다. – SirDarius

관련 문제