Я смущен о следующем коде:MemSet() не работает, как ожидалось
#include<iostream>
#include<cstring>
int main()
{
int arr[3][4];
memset(arr, 10, sizeof(arr));
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 4; ++j)
std::cout<<arr[i][j]<<" ";
std::cout<<"\n";
}
return 0;
}
Выход:
168430090 168430090 168430090 168430090
168430090 168430090 168430090 168430090
168430090 168430090 168430090 168430090
я ожидал работает приведенный выше код будет печатать
10 10 10 10
10 10 10 10
10 10 10 10
Может кто-нибудь объяснить причину этого странного поведения?
* memset() не работает должным образом * - memset работает правильно. Это зависит от вас, чтобы предоставить соответствующие параметры. Если вы хотели что-то, что делало что-то дистанционно, то, что вы пытаетесь выполнить, есть [std :: fill] (http://en.cppreference.com/w/cpp/algorithm/fill) – PaulMcKenzie
Функция 'memset' не имеет понятия, что это массив 'int' и поэтому не имеет понятия, как дать им правильный шаблон для декодирования как 10. –