1. 程式人生 > >memset 陣列初始化

memset 陣列初始化


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;  
}