Задать вопрос
syamskoy
@syamskoy

Как заполнить массив в c++?

Совершенно нубский вопрос, но не могу нагуглить. Везде примеры с инициализацией или заполнением через циклы, а надо так:
Имеется:
struct package {
 int status = 1;
 byte data[20] = {0};
}
int main(){
 package pkg;
 pkg.status = 0;
 pkg.data[0] = 0x01;
 pkg.data[1] = 0x02;
 pkg.data[3] = 0x03;
 ... 
}

И что бы отдельно каждому элементу не присваивать значение, хотелось бы что нить такое:

struct package {
 int status = 1;
 byte data[20] = {0};
}
int main(){
 package pkg;
 pkg.status = 0;
 pkg.data = {0x01, 0x02, 0x03};
 ... 
}


Это возможно?
  • Вопрос задан
  • 2680 просмотров
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@abcd0x00
#include <iostream>

using namespace std;

struct package {
    int status;
    unsigned char data[20];
};

int main()
{
    package pkg = { 0, { 0x01, 0x02, 0x03 } };

    cout << pkg.status << int(pkg.data[0]) << endl;
    return 0;
}
Ответ написан
Therapyx
@Therapyx
Data Science
зачем? Если у тебя есть массив и он должен заполняться определенными константами, то лучше это делать через вектор. Тем более если не определено сколько их должно быть. Логичнее было бы использовать что-то вроде этого:
struct package {
 int status = 1;
vector <byte> data;
}
int main(){
byte arr = {0x01, 0x02, 0x03};
 package pkg;
 for (byte u : arr) {
 pkg.data.push_back(u)
}
}

тем самым заготовки массивов, будут заполнять контейнер в стракте.
после чего выводи на экран
for (auto a : pkg.data) {
  cout << a << endl;
}

мб где-то ошибся)) не компайлил... Такой подход как у тебя лучше не использовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы