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

c語言中menset有什麼用

發布時間: 2022-07-02 14:13:22

1. 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。

2. c語言中,memset() 這個函數做什麼用請給出實例。

這個函數可以說是用來清理內存內容的,比如 你聲明一個變長的數組
printf("請輸入數組的長度:");
scanf("%d",&n);
char arr[n];
因為此處的數組變長 所以不能初始化 數組的裡面存著一堆隨機數,而你卻需要將這個數組清空時就可以使用這個函數 例如menset(arr,0,20)-------將數組arr的前20個清空成0. 懂?

3. 求助,C語言中函數memset(),memcpy()和strchr()的功能和用法

memset函數用來對一段內存空間全部設置為某個字元,常用於內存空間初始化。將已開辟內存空間
s
的首
n
個位元組的值設為值
c

下面是一個例子
#include
<stdio.h>
#include
<string.h>
main(){

char
*s="Golden
Global
View";

clrscr();

memset(s,'G',6);

printf("%s",s);

getchar();

return
0;
}
C語言memcpy函數原型:extern
void
*memcpy(void
*dest,
void
*src,
unsigned
int
count);

用法:#include
<string.h>

功能:由src所指內存區域復制count個位元組到dest所指內存區域。

說明:src和dest所指內存區域不能重疊,函數返回指向dest的指針。

舉例:

//
memcpy.c

#include
<syslib.h>

#include
<string.h>

main()

{

char
*s="Golden
Global
View";

char
d[20];

clrscr();

memcpy(d,s,strlen(s));

d[strlen(s)]=0;

printf("%s",d);

getchar();

return
0;

}
函數
strchr()

能:
在一個串中查找給定字元的第一個匹配之處\

法:
char
*strchr(char
*str,
char
c);
程序例:
#include
#include
int
main(void)
{
char
string[15];
char
*ptr,
c
=
'r';
strcpy(string,
"This
is
a
string");
ptr
=
strchr(string,
c);
if
(ptr)
printf("The
character
%c
is
at
position:
%d\n",
c,
ptr-string);
else
printf("The
character
was
not
found\n");
return
0;
}

4. C程序中,語句memset(str,0,80)的作用是什麼

memset是設置內存中的數據

str是一個指針,指向內存起始地址的指針

0,
是要設置的值,是從str指針所指的內存起始地址開始,置為0

80,是指要置0的內存長度

memset(str,0,80)

結果是:將指針str所指的內存,長度是80的內存中的內容寫為0

5. 求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的指針。

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

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

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

7. c語言中memset函數的作用

memset(addr, val, size);

把addr地址開始的內存,大小為size位元組的值,賦值為val


相當於

unsignedchar*t=(unsignedchar*)addr;
inti;
for(i=0;i<size;i++)
t[i]=val;

效果一樣,不過一般memset不會這么實現,而是採用更高效的方法

8. 在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

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

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

10. C語言中printf有無計算功能 memset有什麼用

printf函數家族用於格式化的輸出。沒有計算功能
memset()的深刻內涵:用來對一段內存空間全部設置為某個字元,一般用在對定義的字元串進行初始化為『 』或『/0』;例:char a[100];memset(a, '/0', sizeof(a));