當前位置:首頁 » 編程語言 » c語言中memset
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中memset

發布時間: 2023-03-28 22:29:41

① 求c語言memset的具體用法,什麼時候必須用,什麼時候可以不用以及可以用什麼替換memset

memset函數使用詳解
今天做題卡在MEMSET函數的使用上了,本來以為int a[100]; memset(a, MAX,sizeof(a));就是將a數組全部賦值為MAX,現在才知道他的填充是以位元組為單位,一般用於對字元型變數的初值進行賦值.
更詳細的解說見網路 --> http://ke..com/view/982208.htm
1。void *memset(void *s,int c,size_t n)
總的作用:將已開辟內存空間 s 的首 n 個位元組的值設為值 c。
2。例子
#include
void main(){
char *s="Golden Global View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return 0;
}
3。memset() 函數常用於內存空間初始化。如:
char str[100];
memset(str,0,100);
4。memset()的深刻內涵:用來對一段內存空間全部設置為某個字元,一般用在對定義的字元串進行初始化為『 』或『/0』;例:char a[100];memset(a, '/0', sizeof(a));
memcpy用來做內存拷貝,你可以拿它拷貝任何數據類型的對象,可以指定拷貝的數據長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的內存地址溢出。
strcpy就只能拷貝字元串了,它遇到'/0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字元串長度(第一個『/0』之前)是否超過50位,如超過,則會造成b的內存地址溢出。
5.補充:一點心得
memset可以方便的清空一個結構類型的變數或數組。
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
對於變數
struct sample_strcut stTest;
一般情況下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));
如果是數組:
struct sample_struct TEST[10];

memset(TEST,0,sizeof(struct sample_struct)*10);
6。strcpy
原型:extern char *strcpy(char *dest,char *src);
用法:#i nclude
功能:把src所指由NULL結束的字元串復制到dest所指的數組中。
說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字元串。
返回指向dest的指針。
memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#i nclude
功能:由src所指內存區域復制count個位元組到dest所指內存區域。
說明:src和dest所指內存區域不能重疊,函數返回指向dest的指針。
memset
原型:extern void *memset(void *buffer, int c, int count);
用法:#i nclude
功能:把buffer所指內存區域的前count個位元組設置成字元c。
說明:返回指向buffer的指針。

② C語言memset問題

首先你memset不能用來初始化int類型的內存,也不是不能,是你那麼做了它也不會去按照你想的去初始化,除非你初始化值是0。原因是memset是按位元組進行初始化的,舉例,memset(pStart, 2, sizeof(int)); 一般sizeof(int)值是4,那麼這個memset會將pStart開始的4個內存單元(4位元組),每個位元組都初始化成2。這樣初始化之後,如果你要的是這個int類型的數值,那這個int值就是0x2020202,是這個值。這個和你做的那個初始化是類似的。
然後就是你使用memset的時候使用的是sizeof(data),因為data是一個指針,那麼他的長度32位下永遠都是4,所以你只初始化了4個位元組,也就是只初始化了申請的第一個int單元,後面的兩個都沒有進行初始化。所以第一個int單元的值是0x2020202,也就是十進制的33686018,即你輸出的第一個數,而後面的兩個由於沒有初始化都是以前的值,是隨機的不可預測的。
個人覺得memset用來初始化的話一般都是用來將內存單元清0,想要初始化成一個具體的數值的話,除非你初始化的單元都是位元組的,那樣是可行的,其他的都很不方便。

③ c語言函數中的memset()是怎麼用的

j=0;是一句初始化語句,在int
j;聲明變數後變數的值是未知的,所以要在使用前賦初值。
memset(word,0,21);這個函數第一參數是一個指針,指向目標內存的首地址,第二個參數是你要賦給指定內存塊中各個位元組的值。第三個參數是被操作內存塊的位元組數。連在一起這個語句的意思是,從word指向的內存地址開始的21個位元組的內存,賦成0。其實也是一個初始化操作。

④ 請問在C語言編程中memset(table,0,sizeof(table))代表什麼意思。

將table的李困地址空間全部置0,memset是內存重置函數,第一個哪好念參數是要重置的首地址,第二個是要重置的結果,第三個是重置的襪陸大小
sizeof是計算table內存空間大小的意思

⑤ C語言 memset函數

memset
原型:extern
void
*memset(void
*buffer,
int
c,
int
count);
用法:#include
<string.h>
功能:把buffer所指內存區域的前count個位元組設置成字元c。
說明:返回指向buffer的指針。
舉例:
//
memset.c
#include
<syslib.h>
#include
<string.h>
main()
{
char
*s="Golden
Global
View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return
0;
}
相關函數:bzero,setmem,strset

⑥ c語言中memset是什麼意思

memset()的函數, 它可以一位元組一位元組地把整個數組設置為一個指定的值。 memset()函數在mem.h頭文件中聲明,它把數組的起始地址作為其第一個參數,第二個參數是設置數組每個位元組的值,第三個參數是數組的長度(位元組數,不是元素個數)。其函數原型為:
void *memset(void*,int,unsigned);
其中陪簡void*表示地址
memset()的第一個實參是數組名好亂培,數組名作參數即數組作參數,它僅僅只是一個數組的起始地址而已。
實現第一個memset()函數調用的內存布局見圖7-3。友唯 在函數memset()棧區,從返回地址往上依次為第1,2,3個參數。第1個參數中的內容是main()函數中定義的數組ia1的起始地址。第2個參數是給數組設置的值(0),第3個參數是數組的長度(50*2)。函數返回時,main()函數的數組中內容全置為0。

⑦ C語言中,memset函數都可以給什麼類型的數組清零

任何類型的數組都可以,實際上memset函數是對某一個地址以及該地址之後的一串空間進行賦值操作,只要是地址值,都可以被賦值。x0dx0a1、memset是計算機中C/C++語言函數。將帆頃叢s所指向的某一塊內存中的前n個 位元組的內容全部設置為ch指定的ASCII值, 第二個值為指定的內存地址,塊的大小由第三個參數指定,這個函乎核數通常為新申請的內存做初始化工作態櫻, 其返回值為指向s的指針。x0dx0a2、函數介紹:void *memset(void *s, int ch, size_t n);x0dx0a函數解釋:將s中前n個位元組 (typedef unsigned int size_t )用 ch 替換並返回 s 。x0dx0amemset:作用是在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。

⑧ c語言中的meset 是什麼意思 如何用

memset用來對一段內存空間全部設置為某個字元,一般用在對定義的字元串進行初始化為『
』或『\0』;例:char
a[100];memset(a,
'\0',
sizeof(a));
memcpy用來做內存拷貝,你可以拿它拷貝任何數據類型的對象,可以指定拷貝的數據長度;例:char
a[100],b[50];
memcpy(b,
a,
sizeof(b));注意如用sizeof(a),會造成b的內存地址溢出。
memcpy
原型:extern
void
*memcpy(void
*dest,
void
*src,
unsigned
int
count);
用法:#include
<string.h>
功能:由src所指內存區域復制count個位元組到dest所指內存區域。
說明:src和dest所指內存區域不能重疊,函數返回指向dest的指針。
memset
原型:extern
void
*memset(void
*buffer,
int
c,
int
count);

⑨ c語言里有memset()怎麼用需要什麼頭文件

包含在 <string.h>頭文件中

memset為內存填充函數,可以用它對一片內存空間進行初始化, 它可以一位元組一位元組地把整個數組設置為一個指定的值
其原型為
void *memset(void *s, int v, size_t n);
這里s可以是數組名,也可以是指向某一內在空間的指針;
v為要填充的值;
n為要填充的位元組數,通常為sizeof(s);
使用memset時要注意的是,memset是逐位元組進行填充,所以s一般為char *型。

⑩ C語言里 memset和sizeof是什麼意思

memset是個函數,它在string.h頭文件中有聲明。
它有輪攔凳三個參數,一是所要set的首地址,二是set的值,三是set的位元組數,
num肯定是個數組,因為數組在傳參時能自動轉成指向數組的衡晌首元素的指針,
如果臘旅不是數組,應該寫成memset(&num, 0, sizeof(num));