Этот подход является плохой идеей для нескольких причин, но первый здесь некоторые проблемы:
int temp[0];
Это массив из 0 пунктов, которые я даже не думаю, разрешено для элементов стека. При объявлении массива, подобного этому, вы должны указать максимальное количество значений, которое вы когда-либо использовали: например. int temp[10];
Это очень важно! - если вы указали меньшее число (например, [10], а вы используете [11]), то вы вызовете перезапись памяти, которая в лучшем случае сработает и в худшем случае вызовет странные ошибки, которые являются кошмаром для отслеживания.
Следующая проблема эта линия:
while (*temp + i != '\0')
, что эта линия делает принимает значение сохраняет в адрес, указанный в «Темп» и добавить I. Что вы хотите, чтобы получить значение в п-й элемент адреса, указанного в температуре, например, так:
while (*(temp + i) != '\0')
Так вот что это неправильно, но вы должны взять пять минут, чтобы думать о лучшем способе сделать это.
Причины я уже говорил, что это плохая идея, являются:
- Вам нужно перебирать весь любое массива вы требуете его длина
- Вы не можете хранить согласующий элемент (в данном случае 0) в массив
Вместо этого я предлагаю вам сохранить отдельное значение, которое хранит количество элементов в массиве. Очень общий способ сделать это - создать класс, который обертывает это понятие (блок элементов и текущий размер).
Стандартная библиотека C++ поставляется с классом шаблонов с именем «вектор», который может быть использован для этой цели. Это не совсем то же самое, что массив (вы должны добавлять элементы перед индексированием), но это очень похоже. Он также обеспечивает поддержку копирования/изменения размера, что тоже удобно.
Вот ваша программа, написанная для использования std :: vector. Вместо функции «длины» Я добавил что-то напечатать значения:
#include <vector>
#include <iostream>
void print(std::vector<int> const& vec)
{
using namespace std;
for (size_t i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
cout << endl;
}
int main()
{
std::vector<int> temp;
temp.push_back(7);
temp.push_back(10);
print(temp);
return 0;
}
Это не должно быть скомпилирован; вы не можете иметь массивы с длиной 0. Какой компилятор вы используете? –