memset 陣列初始化
阿新 • • 發佈:2019-01-07
void *memset(void *s, int ch, size_t n)
1.功能是:將s所指向的某一塊記憶體中的前n個位元組的內容全部設定為ch指定的ASCII值,
第一個值為指定的記憶體地址,塊的大小由第三個引數指定,
這個函式通常為新申請的記憶體做初始化工作,
其返回值為指向s的指標。
2.注意:這邊是對前n個位元組進行賦值,而且還是ASCII的形式,
那就是說,對於字元陣列,可以將其初始化為任意一個字元,
那對於其他基礎型別的陣列呢?
3.因為memset按位元組對記憶體塊進行初始化,
所以他無法對int陣列初始化除了0和-1以外的其他數
#include<iostream> #include<bits/stdc++.h> using namespace std; int main() { int a[20],b[20],c[20],d[20]; memset(a,0,sizeof(a));//riht,初始化為 0 memset(b,-1,sizeof(b));//right,初始化為 -1 memset(c,1,sizeof(c)); //wrong memset(d,2,sizeof(d)); //wrong cout<<"a:"<<endl; for(int i=0;i<20;i++) cout<<a[i]<<endl; cout<<endl<<endl; cout<<"b:"<<endl; for(int i=0;i<20;i++) cout<<b[i]<<endl; cout<<endl<<endl; cout<<"c:wrong"<<endl; for(int i=0;i<20;i++) cout<<c[i]<<endl; cout<<endl<<endl; cout<<"d:wrong"<<endl; for(int i=0;i<20;i++) cout<<d[i]<<endl; cout<<endl<<endl; return 0; }