日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++入门必学库函数 memset

發布時間:2024/3/26 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++入门必学库函数 memset 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、memset的介紹

memset是c語言的string.h里的字符串初始化函數,但是也經常用于普通數組的初始化,它的優點就是簡單易用,一行代碼就可以初始化數據了,當然這完全可以用for循環賦值代替的。

二、memset的基本用法

函數模板:
memset(數組首地址,初始值,初始化大小)

數組首地址:數組的首地址是可以直接用數組名代替的

初始值: 初始值的范圍是0到127,因為memset是以字節為單位對數組進行賦值的,一個字節8位,所表達的值就是0到127

初始化大小: 初始化大小用一個整數表示,表示需要初始化多少字節,通常用sizeof(數組首地址)來獲得需要初始化的大小

看著有點難懂沒關系,看完示例代碼就清晰了

1、char數組的初始化

memset本來就是為char數組初始化準備的

示例代碼:

#include<iostream> #include<cstring>//c語言的頭文件是string.h,c++的頭文件是cstring using namespace std;//命名空間 int main(){char arr[10]; memset(arr,'a',10);//從數組首地址開始,初始化10個字節的值為'a';cout<<"memset(arr,'a',10)后,數組的值為:"<<endl; for(int i=0;i<10;i++){//打印 cout<<arr[i]<<' ';}cout<<endl;cout<<endl;memset(arr+2,'b',4);//從數組首地址+2開始,即arr[2]的地址開始,初始化4個字節的值為'b';cout<<"memset(arr+2,'b',4)后,數組的值為:"<<endl; for(int i=0;i<10;i++){//打印 cout<<arr[i]<<' ';}cout<<endl;cout<<endl;cout<<"sizeof arr的值為"<<(sizeof arr)<<endl;//sizeof可以獲取到數組的大小,這個代碼中sizeof arr的值就是10 memset(arr,'c',sizeof arr);//從數組首地址開始,初始化數組大小個字節的值為'c'cout<<"memset(arr,'c',sizeof arr)后,數組的值為:"<<endl; for(int i=0;i<10;i++){//打印 cout<<arr[i]<<' ';}}

運行結果:

memset(arr,'a',10)后,數組的值為: a a a a a a a a a amemset(arr+2,'b',4)后,數組的值為: a a b b b b a a a asizeof arr的值為10 memset(arr,'c',sizeof arr)后,數組的值為: c c c c c c c c c c

2、普通數組的初始化

普通數組的初始化用法有點局限,因為int型的大小是32位的、long long型的大小是64位的,而memset只能以8位為單位初始化數組。

普通數組我們只需要學習兩個初始值就可以了,一個是0,一個是0x3f

0: 0是最簡單的了,就是把全部字節都置零,那么無論是int還是long long都可以全部初始化為0了

0x3f: 0x指的是十六進制的意思,說明 3f 是一個十六進制數,十六進制0-9是不變的,用a、b、c、d、e、f來代表10、11、12、13、14、15,那么3f對應的二進制就是0011 1111的意思,我們一般需要用最大值的時候是不會取真正的最大值的,因為最大值進行相加運算的時候就會越界了,這是有風險的,我們應該取最大值的一半或者更小一點,即經常使用的 0x3f3f3f3f ,而0x3f就可以把每 8 位都初始化為這個值,如果是 int 型的,那么就會被初始化為 0x3f3f3f3f ,如果是long long型,那么就會被初始化為 0x3f3f3f3f3f3f3f3f

總的來說,我們需要初始化為 0 的時候就用 0,需要初始化為最大值的時候就用0x3f

示例代碼:

#include<iostream> #include<cstring>//c語言的頭文件是string.h,c++的頭文件是cstring using namespace std;//命名空間 int main(){cout<<"int型數組"<<endl; int arr1[10];//定義一個int型數組 memset(arr1,0,sizeof arr1);//初始化數組為0cout<<"memset(arr1,0,sizeof arr1)后,數組的值為" <<endl;for(int i=0;i<10;i++){//打印 cout<<arr1[i]<<' ';} cout<<endl;memset(arr1,0x3f,sizeof arr1);//初始化數組為int型最大值的一半 cout<<"memset(arr1,0x3f,sizeof arr1)后,數組的值為" <<endl;for(int i=0;i<10;i++){//打印 cout<<arr1[i]<<' ';} cout<<endl;cout<<endl;cout<<"long long型數組"<<endl; long long arr2[10];//定義一個long long型數組 memset(arr2,0,sizeof arr2);//初始化數組為0cout<<"memset(arr2,0,sizeof arr2)后,數組的值為" <<endl;for(int i=0;i<10;i++){//打印 cout<<arr2[i]<<' ';} cout<<endl;memset(arr2,0x3f,sizeof arr2);//初始化數組為int型最大值的一半 cout<<"memset(arr2,0x3f,sizeof arr2)后,數組的值為" <<endl;for(int i=0;i<10;i++){//打印 cout<<arr2[i]<<' ';} }

運行結果:

int型數組 memset(arr1,0,sizeof arr1)后,數組的值為 0 0 0 0 0 0 0 0 0 0 memset(arr1,0x3f,sizeof arr1)后,數組的值為 1061109567 1061109567 1061109567 1061109567 1061109567 1061109567 1061109567 1061109567 1061109567 1061109567long long型數組 memset(arr2,0,sizeof arr2)后,數組的值為 0 0 0 0 0 0 0 0 0 0 memset(arr2,0x3f,sizeof arr2)后,數組的值為 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399 4557430888798830399

點個贊吧!

總結

以上是生活随笔為你收集整理的c++入门必学库函数 memset的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。