清空陣列可以用memset函式嗎如果可以的話怎麼用啊

時間 2021-12-21 14:23:06

1樓:史小雲

char str[10];

memset(str, 0, sizeof(str));

或者memset(str, 0, sizeof(char)*10);

這是c的標準函式,c++能用只不過是能相容c而已.

所以不理解lz後面那句話

怎麼用memset清空字元陣列?

2樓:du瓶邪

所謂清空陣列,是要清空每個元素;清空字串是將字串置為空,這兩個要求有異。

清空陣列:char a[100]; int i; for ( i=0;i<100;i++ ) a[i]=0;

清空字串:char a[100]; a[0]=0; //或a[0]='\0';

因為字串以0結束,你只要將字串陣列第1個字元設定為0值即算清空了字串。

存放字串的字元陣列就是你說的字串陣列,只不過說明這個字元型陣列是用於存放字串的而已,官方可沒有這個說法,只要字元型陣列一說。

3樓:匿名使用者

memset是設定記憶體的值,memset(a, 0, sizeof(a))就是將陣列a的每個位置都設定為0,相當於迴圈的a[i]='0',memset(a, '\0', sizeof(a))可以算是清空,因為所有的c字串都是以'\0'結尾的,設定成了'\0'也就相當於清空了。 a[0]='\0'可以清空a,你可以設定後,呼叫strlen(a)看看長度是多少啊

4樓:陳冠鋼

用memset(a,0,strlen(a)); //strlen(a)檢測字串長度

a[0]='\0'; 不能清空,僅是把第0個元素置為'\0',用printf輸出為空而已。

5樓:小魚

兩個memset都行。因為0和'\0'等價。

需要注意的是a必須是定義成char a = "******"這樣而不能是char *a = "******"。

否則,sizeof(a)後者就是乙個指標的大小也就是4了。

a[0] = '\0'只能是在a的第乙個字元的位置上寫乙個0,也就是字串的結束符而已。

實際上自a[1]開始後面還都是有資料的。

如果從相對意義上說只要控制正確就行,從絕對的「清空」角度不能算清空。

必須使用你寫的兩個memset才可以。

希望有用。

c語言中,memset函式都可以給什麼型別的陣列清零?

6樓:匿名使用者

函式原型:void *memset(void *s, int c, size_t n);

函式解釋:將s中前n個位元組替換為ch並返回s;

memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法。

7樓:匿名使用者

任何型別的陣列都可以,實際上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:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法。

用memset和for迴圈給陣列初始化有什麼不同? c++

8樓:匿名使用者

1、效果是一樣的,memset更常用。memset的效率比for迴圈要高出很多。

2、使用memset函式與將函式**寫在自己的程式裡是不一樣的,c標準庫中的memset對cache的利用做了優化,具體的在《c專家程式設計》151頁有解釋,這裡給出測試:

#include

#define maxsize 100000int main()

{  char arr[maxsize];

for(int i=0;i<10000;i++){  memset(arr,'0',sizeof(arr));

//        for(int j=0;j程式裡的注釋部分與memset行分別使用,結果是使用memset的程式執行時間大約為0.1s,而用for迴圈的程式要3s多。綜上:

memset()可以用在字元陣列的初始化以及類似於memset(arr,0,n*sizeof(int));的情況,效率比手動賦值要高的多。

9樓:匿名使用者

用memset可以節省cpu的計算時間!for循除了計算時間不說,至少要訪問十次,而memset只訪問一次,而且也好理解!

10樓:源語夢

memset是系統函式,你如果用包含了標準c中的標頭檔案,就是由c完成了包裝。

memset應該會更有效率一些,而且用起來方便。

11樓:

效果是一樣的,memset更常用

你是願意寫上好幾行的for迴圈呢還是只寫一行memset呢

其實memset的效率比for迴圈要高出很多

12樓:匿名使用者

memset使用的時候要小心點,別把size寫錯了

有人知道c++將乙個陣列全部清零的命令是什麼嗎?

13樓:會飛的小兔子

c++將乙個陣列全部清零的命令是memset。memset:作用是在一段內

存塊中填充某個給定的值,專它是對較大

屬的結構體或陣列進行清零操作的一種最快方法。

memset()函式原型是externvoid*memset(void*buffer,intc,intcount)buffer:為指標或是陣列,c:是賦給buffer的值,count:

是buffer的長度。

擴充套件資料memset例項

#include

#include

usingnamespacestd;

intmain()

14樓:匿名使用者

c++沒有將一抄

個陣列完全清零的命令,但可bai以通過記憶體操作或du迴圈賦值完zhi成。

int arr[n];

memset(arr,0,n*sizeof(int));

注意memset命令的第dao三個引數,是以位元組為單位的,因此不同型別的陣列,要計算完整的記憶體位元組長度做為第三引數。這裡利用的是陣列的記憶體連續性。

另外,陣列初始化可以使用如下命令安全的全部給予0值:

int arr[n] = ;

15樓:無憂網事

c++沒有這樣命令,要實現這個功能可能通過迴圈語句來實現。

16樓:

memset(arr, 0, sizeof(arr));

17樓:陳珺驁

memset命令

memset(s,0,sizeof(s));

C用多維陣列名作為函式引數時,如果陣列的行和列均是變數,怎麼辦

陣列的行和列均是變數,需要動態開陣列,在c 裡面需要用到new動態開一個二維陣列 int irow 5 int iline 5 int parry new int irow for int i 0 i 用完陣列後需要釋放,for int i 0 i delete parry 俎晨朗 打個比方,比如說...

建築可以用幾次,建築模板可以用幾次

模板的使用次數正常在4 8次左右,最主要是的看工人使用情況,沒有乙個準確的 生產工藝不同 用料不同 也就不同,一分錢一分貨。建築模板是由木段旋切成單板或由木方刨切成薄木,再用膠粘劑膠合而成的三層或多層的板狀材料,通常用奇數層單板,並使相鄰層單板的纖維方向互相垂直膠合而成。對於很多建築工程施工工地採購...

曲線和幾何圖形是不是有可能可以用函式表示,但一定可以用方程表

魂際 函式是一對一對映,也就是一個x對應一個y,如果曲線或者幾何圖形是一個x對應好幾個函式值,那麼就不能用函式表示,方程總是可以構造的。一般幾何圖形都是方程表示嗎?可以用函式嗎?什麼時候不可以? o客 一般幾何圖形都是方程表示嗎?為便於討論,幾何圖形指曲線。是的,都是方程表示。即是可以函式表示,我們...