1. 程式人生 > >memset初始化陣列的問題(不能初始化特定的數)

memset初始化陣列的問題(不能初始化特定的數)

memset用於初始化陣列,僅能初始化為0值,

而不能初始化一個特定的值。

因此,如果對申請的一段存放陣列的記憶體進行初始化,每個陣列元素均初始化為特定的值,必須使用迴圈遍歷來解決。

C++ Reference對memset函式的解釋:

void * memset ( void * ptr, int value, size_t num );

Fill block of memory

Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).

也就是說,value只能是unsigned char型別,num是Number of bytes to be set to the value.

#include <bits/stdc++.h>
using namespace std;
int main ()
{
  int str[10];
  memset (str,9,sizeof(str));
  for(int i=0;i<9;i++)
    cout<<str[i];
  return 0;
}
//output :151587081151587081151587081151587081151587081151587081151587081151587081151587081

初始化字元

#include <bits/stdc++.h>
using namespace std;
int main ()
{
  char str[10];
  memset (str,'a',sizeof(str));
  str[9]='\0';
  puts(str);
  return 0;
}
//output :aaaaaaaaa

複製程式碼