1. 程式人生 > >C++中memset函式

C++中memset函式

轉載自  http://blog.sina.com.cn/s/blog_6f611c300101e59l.htmlvoid * memset (void * S, int value, size_t num);函式作用:將ptr所指向的某一塊記憶體中的每個位元組的內容全部設定為value指定的ASCII值,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作,其返回值為指向S的指標。注意它是按位元組清除的,從低位開始清除。memset函式能把陣列中的元素值都設定成字元值,但設定成數字還是不行的。一個例子:#include "stdafx.h"#include#includeusing namespace std;int main(){    int a[5]={0};   memset(a,1,5);
    //如果這裡改成memset(a,1,5 *sizeof(int))也不可以,因為memset按位元組賦值。    for(int i = 0;i < 5;i++)        cout<<a[i]<<" ";    system("pause");    return 0;}執行結果:16843009 1 0 0 0而改成memset(a,1,5 *sizeof(int))後,執行結果為:16843009 16843009 16843009 16843009 16843009memset是以位元組為單位就是對array指向的記憶體的4個位元組進行賦值,每個都用ASCⅡ為1的字元去填充,轉為二進位制後,1就00000001,佔一個位元組。一個INT元素是4位元組,合一起就是00000001000000010000000100000001,就等於16843009,就完成了對一個INT元素的賦值了。所以用memset對非字元型陣列賦初值是不可取的!但是可以當作清零函式,以下是可行的(00000000000000000000000000000000),所以還是0.

相關推薦

透徹分析C/C++memset函式(轉載只為查閱方便,若有侵權立刪)

透徹分析C/C++中memset函式       在C語言中,經常需要對記憶體進行操作,裡面涉及很多函式,但是memset函式的使用有一點需要大家格外注意,這也是我在做專案時遇到過的一個問題,除錯了很久才找出來錯誤。     &nbs

C++memset()函式

前段專案中發現一個問題,程式總是在某個dynamic_cast進行動態轉換時出異常,查了半天才發現問題原來是出在memset的使用上,雖然問題本身顯而易見,但當處於幾十萬行程式碼量級中時,就變得不太那麼容易定位了。 本文歸納了下使用memset幾個需要注意的地方,雖然內容很簡單,但也希望

透徹分析C/C++memset函式

在C語言中,經常需要對記憶體進行操作,裡面涉及很多函式,但是memset函式的使用有一點需要大家格外注意,這也是我在做專案時遇到過的一個問題,除錯了很久才找出來錯誤。 函式原型是:void *memset(void *s, int ch, size_t n);    函式功

C++memset函式的用法

//複習陣列的時候,第一次見到了memset,學之。 memset:char型初始化函式 標頭檔案:<string.h> 或 <memory.h> 函式原型:void *memset(void *s , int ch , size_t  n ) m

C++memset函式

轉載自  http://blog.sina.com.cn/s/blog_6f611c300101e59l.htmlvoid * memset (void * S, int value, size_t num);函式作用:將ptr所指向的某一塊記憶體中的每個位元組的內容全部設定

C++memset()函數筆記

i++ iostream clas 內存 esp 分享圖片 ima png pac memset函數按字節對內存塊進行初始化,所以不能用它將int數組初始化為0和-1之外的其他值(除非該值高字節和低字節相同)。 #include <iostream> #inc

c/c++system函式

原文地址:http://www.cnblogs.com/tianzeng/p/9550379.html   在windows下的system函式中命令可以不區別大小寫!  函式名: system  功 能: 發出一個DOS命令  用 法: #inc

c++虛擬函式的理解

虛擬函式的作用,事實上就是實現了多型性,就是實現以共同的方法,但因個體差異而採用不同的策略。下面有程式碼例項來描述: class A{ public: void print(){ cout<<”This is A”<<endl;} }; class B:publ

[ Visual Studio C++ ] - [ MFC ] memset()函式使用講解

一.前言                memset()函式多用在socket中。 二.講解      1.函式的功能 memset()函式  用來

C++memset()用法

memset()函式原型是extern void *memset(void *buffer, int c, int count) buffer:為指標或是陣列 c:是賦給buffer的值 count:是buffer的長度 1. memset是以位元組為單位,初始化記憶體塊。 當初

C++sort函式用法

C++中sort函式用法 排序示例: 輸入兩個數n,t,其中n是待排的結構體個數,t=0代表用降序排序,t = 1表示用升序排序 例如這樣: 例示: jack 70 peter 96 Tom 70 smith 67 從高到低 成績 peter 96 jack 70

python呼叫C++函式(最簡明教程)

C++的函式需要用extern描述才能被Python呼叫。先建一個名為ct.cpp的c++檔案,如下: #include<iostream> #include<string> using namespace std; extern "C"{ int hehe(){

Linux Cmain函式的引數argc和argv

                                          &

C++sort函式從大到小排序的兩種方法

1.sort函式描述 而且,sort函式的演算法效率相當於快排,使用sort函式有時候可能比我們自己寫一個排序演算法,可能效率更高。 2.使用sort函式排序 #include <iostream> #include <algorithm> usin

C++虛擬函式函式

解構函式為什麼要宣告為虛 函式??? 基類的解構函式需要宣告為虛擬函式:  當派生類物件經由一個基類指標被刪除,而該基類帶著一個non-virtual解構函式,實際執行時通常發生的是物件的派生類成員沒有被銷燬。這也就是區域性銷燬,會發生記憶體洩漏,所以我們通常將基類的解構函式需要宣告為

C++成員函式的過載、覆蓋與隱藏

成員函式被過載的特徵: (1)相同的範圍(在同一個類中); (2)函式名字相同; (3)引數不同; (4)virtual關鍵字可有可無。 覆蓋是指派生類函式覆蓋基類函式,特徵是: (1)不同的範圍(分別位於派生類與基類); (2)函式名字相同; (3)引數相同; (4)基類函

深入理解CPP與Cbsearch函式的用法

·使用besearch函式的前提(一些廢話) 首先讓我們先亮出二分法的定義: https://baike.baidu.com/item/二分法/1364267 以及二分法實現的方法: https://blog.csdn.net/sufeiboy/article/details/54401257 這些

C++函式過載、覆蓋與隱藏

在C++語言中,函式扮演著很重要的角色,不管面向過程設計,還是基於物件設計;不管是面向物件程式設計,還是基於泛型程式設計,函式都可以隨處而見。在談論C++中的函式過載、覆蓋和隱藏之前,先回顧下函式的基礎知識。   函式的宣告包括函式的返回值型別,函式名稱,引數列表(引數的型別、引數的個數、引數的

c++cmath函式庫(學生筆記)

c++中cmath是一個重要的數學函式庫。呼叫時必須包含cmath主檔案。 #include #include 其常用函式原型: int abs(int n) 求n的絕對值 double cos/sin/tan(double x) 求x的三角函式值(x為弧度值) double exp(dou

c++sort()函式的用法簡介

程式碼: #include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; int main() {