powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / инициализация массива
9 сообщений из 9, страница 1 из 1
инициализация массива
    #39712874
хорошо я согласен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть какая-то возможность обнулить массив, объявленный в качестве поля класса?
Код: plaintext
1.
2.
3.
4.
class dddddd
{
    char arr[3][10];
}

?
я ожидал как-то так:
Код: plaintext
1.
2.
3.
4.
class dddddd
{
    char arr[3][10]={{0},{0},{0}};
}


или аналогично в конструкторе. Но как правильно?
...
Рейтинг: 0 / 0
инициализация массива
    #39712879
хорошо я согласен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще, у меня структура, если без подробностей, выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
{
	char arr1[64];
	char arr2[3][10];
	char arr3[256];
}


Можно ли её в конструкторе или при инициализации как-то сразу обнулить целиком? Т.е. всю память залить нулями.
...
Рейтинг: 0 / 0
инициализация массива
    #39712880
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошо я согласен,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct MyStruct
{
  char arr1[64];
  char arr2[3][10];
  char arr3[256];

  MyStruct()
  {
    std::memset(&arr1, 0, sizeof(arr1));
    std::memset(&arr2, 0, sizeof(arr2));
    std::memset(&arr3, 0, sizeof(arr3));
  }
  
};
...
Рейтинг: 0 / 0
инициализация массива
    #39712889
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошо я согласен, есть еще один вариант, но некоторые на него плюются:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
struct MyStruct
{
  char arr1[64];
  char arr2[3][10];
  char arr3[256];

  MyStruct()
  {
    register size_t sz = sizeof(MyStruct) - (size_t)&reinterpret_cast<MyStruct*>(0)->arr1;
    std::memset(&arr1, 0, sz);
  }
  
};
...
Рейтинг: 0 / 0
инициализация массива
    #39712893
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще лучше так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct MyStruct
{
  char arr1[64];
  char arr2[3][10];
  char arr3[256];

  MyStruct()
  {
    constexpr
    size_t sz = sizeof(MyStruct) - (size_t)&reinterpret_cast<MyStruct*>(0)->arr1;
    std::memset(&arr1, 0, sz);
  }
  
};
...
Рейтинг: 0 / 0
инициализация массива
    #39712933
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

Мсье ведь не знает C++ .
Код: plaintext
1.
2.
3.
4.
5.
6.
struct MyStruct
{
  char arr1[64] {};
  char arr2[3][10] {};
  char arr3[256] {};
};
...
Рейтинг: 0 / 0
инициализация массива
    #39712939
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C++ 11:
Код: sql
1.
2.
3.
4.
5.
6.
struct aaa
{
	char arr1[64] = {};
	char arr2[3][10] = {};
	char arr3[256] = {};
};


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
инициализация массива
    #39712954
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Работает и без =
...
Рейтинг: 0 / 0
инициализация массива
    #39713017
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ, постоянно забываю, что массивы, как члены, можно так инициализировать.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / инициализация массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]