2010-08-30 2 views
3

Можно ли сделать что-то подобное на C++ (не могу проверить его сам прямо сейчас)?C++: копировать массив

int myarray[10] = {111,222,333,444,555,666,777,888,999,1234}; 

void functioncc() 
{ 
int temparray = myarray; 
for(int x=0; x<temparray.length; x++){ 
    .... do something 
} 

} 

А может быть, это (но я не думаю, что он есть):

int array1[5] = {0,1,2,3,4,5,6,7,8,9}; 
int array2[5] = {9,8,7,6,5,4,3,2,1,0}; 

void functioncc(int arid) 
{ 
    temparray[10] = "array"+arid; 
    ........ 

} 

я могу делать такие вещи, как, что в JavaScript, но, как я сказал, - не думаю, что это было бы возможно в C++ ,

Спасибо за ваше время.

+0

Можете ли вы спросить, что вы хотите знать, а не размещать некорректный код и спрашивать, возможно ли что-то подобное? Невозможно точно узнать, что вы пытаетесь сделать из своего кода. –

+0

Что вы пытаетесь сделать? назначая указатель на int? добавление строки и целого числа? – lalli

+7

Вы должны, вероятно, [получить книгу] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) на C++ вместо того, чтобы гадать вокруг. Вы получите гораздо больше. Посмотрите на 'std :: vector' или' boost ::/std :: array'. – GManNickG

ответ

3

Несомненно.

int myarray[] = {111,222,333,444,555,666,777,888,999,1234}; 

void function() { 
    std::vector<int> temparray(std::begin(myarray), std::end(myarray)); 
} 

Обратите внимание, что использование статических неконстантных переменных таким образом, действительно посмотрел вниз, и если вы передаете их на другие функции, вам придется также пройти «конец» указатель.

Однако C++ отличается от Javascript, серьезно, просто не беспокойтесь. Если вам нужно закодировать C++, получите реальный ресурс C++ и изучите его. Синтаксис для основного материала - это единственная вещь.

+0

' myarray [sizeof (myarray)] 'определенно из границы. Я думаю, вы имели в виду 'myarray [sizeof (myarray)/sizeof (int)]', который, вероятно, будет работать, но технически [неопределенное поведение] (http://stackoverflow.com/questions/3144904/may-i-take-the- адрес-оф-один-пришедшего к конечному-элемент-оф-ан-массива замкнут). – fredoverflow

+0

@FredOverflow: Вы уверены в технически неопределенном поведении? http://stackoverflow.com/questions/988158/ –

+0

Я уверен, что & myarray [sizeof (myarray)] - это четко определенное поведение, поскольку законно указывать один за концом массива. – Puppy

1

Оба случая невозможны. Вы должны либо поместить длину массива в качестве аргумента (знать об этом), либо помещать внутри массива какой-то «терминатор» в качестве последнего элемента. (I.E. в строке указателя помещают указатель NULL в конец массива)

8
#include <cstring> 

int temparray[10] ; 
memcpy (temparray, myarray, sizeof (myarray)) ; 
+4

'' не правильный заголовок для 'memcpy', попробуйте' 'или' '. В C++ многие люди предпочитают 'std :: copy' от' '. –

+0

Спасибо, Чарлз! Я изменил его на . – TonyK

+2

@Charles: Многие люди по-прежнему предпочитают «memcpy» в этом случае из-за раздражающих предупреждений (sic), которые MSVC дает при использовании 'std :: copy' ... –

Смежные вопросы