2016-11-20 8 views
0

Я объявил int star = new int; и положил значения в star. Что-то вроде:C++ Как получить массивы из динамического распределения?

int *star = new int; 
int i,j = 0; 
for (i = 0; i < length; i++) 
{ 
    if(words[i] == '*') 
    { 
     star[j] = i; 
     j++; 
    } 
} 

Теперь я хочу знать о размере star «ы. Я пробовал sizeof() и _msize(), но они не работают, они просто читают размер шрифта.

+0

Вставьте код здесь, а не изображение. – abdul

+2

'star' - это не массив. – 0x499602D2

ответ

0

star - указатель, указывающий на одно целое число. Таким образом, length должен быть 1, до вас, чтобы установить его. star[0] в порядке, но star[1] был бы вне пределов. Кстати, когда вы используете динамическое размещение, не забудьте сделать delete star; в конце.

sizeof(star) даст вам размер указателя, а не количество выделенных элементов.

Если вы хотите знать, динамический размер, вы должны следить за ним самостоятельно:

size_t length = 15;   // or any number you want 
int *star = new int[length]; // this time you've allocated an array 
... 
delete[] star;    // if you allocate an array, don't forget the [] 

Альтернативой является использование vector<int>, которые являются полностью динамичны, могут расти по мере необходимости, и заботиться о открепление, когда они больше не нужны:

vector<int> star; // empty vector created 
    ... 
     star.push_back(i); // add an element 
    ... 
    j=star.size(); // in fact you don't need j anymore 

Вы можете получить доступ пользователей так же, как с массивами (например star[k])

+0

Никто не знает, как долго длится. Если входы 3, тогда размер равен 3. Это то, что я хочу, как malloc в C. Я хочу сделать эту функцию, а затем использовать вектор? –

+0

@ 이상훈 вектор будет проще (см. Править) – Christophe

0

Y ou не объявили звезду как массив, а как одно целое. Если это нужно, чтобы узнать, сколько раз «*» появляется в вашем файле, вы должны создать целое число int count = 0 и выполнять count++; каждый раз, когда word[i] == '*'.

+0

then Какого рода fuction я использую? Я хочу иметь такой же эффект, как malloc в C. –

+0

Мне это понравилось. Я хочу знать, как использовать динамическое распределение. –

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

  • Нет связанных вопросов^_^