Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / инициализация массива / 9 сообщений из 9, страница 1 из 1
04.10.2018, 11:20
    #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
04.10.2018, 11:24
    #39712879
хорошо я согласен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация массива
вообще, у меня структура, если без подробностей, выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
{
	char arr1[64];
	char arr2[3][10];
	char arr3[256];
}


Можно ли её в конструкторе или при инициализации как-то сразу обнулить целиком? Т.е. всю память залить нулями.
...
Рейтинг: 0 / 0
04.10.2018, 11:27
    #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
04.10.2018, 11:37
    #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
04.10.2018, 11:44
    #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
04.10.2018, 12:38
    #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
04.10.2018, 12:41
    #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
04.10.2018, 12:59
    #39712954
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
инициализация массива
Dimitry Sibiryakov,

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


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