【C++】memset()給整形數組賦初值的坑(不要這麼做)

思考來自:Leetcode例題 - custom-sort-string

#include <cstring>
#include <iostream>
using namespace std;

int main() {
  int a[10];
  memset(a, 0, sizeof(int) * 10);
  for (int i=0; i<10; i++) cout<<a[i]<<endl;
}

memset()將數組歸0是可以的,歸1是不行的。

#include <cstring>
#include <iostream>
using namespace std;

int main() {
  int a[10];
  memset(a, 1, sizeof(int) * 10);
  for (int i=0; i<10; i++) cout<<a[i]<<endl;
}

會輸出10個16843009。原因是此處賦1,實際上是將這個int數變成了00000001 00000001 00000001 00000001,即16843009。

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章