Я немного запутался в том, как назначить глобальный указатель и дать значение в основной функции?
например, здесь мой пример кода
bool *list;
int main()
{
list=new bool[7];
//i want to auto add a value but how, is that below code is correct??
list={true,false,true,true,true,true};
}
я пытаюсь с кровопролитием c++ извините за мой плохой английский.
Этот синтаксис
list={true,false,true,true,true,true};
неправильно.
Вместо этого вы могли бы написать
bool *list;
int main()
{
list=new bool[7] {true,false,true,true,true,true};
}
Или вы должны использовать оператор присваивания
bool *list;
int main()
{
list=new bool[7];
list[0] = true;
list[1] = false;
list[2] = true;
list[3] = true;
list[4] = true;
list[5] = true;
}
Или вы можете использовать указатель на объект типа std :: array. Например
#include <array>
std::array<bool, 7> *list;
int main()
{
list=new std::array<bool, 7>;
*list = {true,false,true,true,true,true};
}
И, наконец, вы можете использовать std::vector<bool>
вместо указателя. или std::bitset
:)
Почему указатель и динамическое распределение? Почему не просто:
bool list[7] = {true,false,true,true,true,true};
int main()
{
// ... no need to initialize or assign here ...
}
Примечание. Массив имеет размер 7, но вы предоставляете только 6 начальных значений. Вы уверены, что это то, что вы хотите?
const
перед bool list[7] = ...
part.
list[0] = true;
list[1] = false;
list[2] = true;
list[3] = true;
list[4] = true;
list[5] = true;
list[6] = ???; (whatever you want it to be - true or false)
Это самый простой способ, когда у вас нет десятков или сотен элементов.
list = new bool[7]{true, false, ..., true};
, Если нет, опция является временным массивом и std::copy_n
. Конечно, это должен быть std::vector
(следует заметить, что он принимает v = {...};
).
Вы можете использовать битовый набор вместо массива.
#include <bitset>
#include <string>
std::bitset<7>* list;
int main()
{
list = new std::bitset<7>;
*list = std::bitset<7>(std::string("111101"));
}