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客 一般幾何圖形都是方程表示嗎?為便於討論,幾何圖形指曲線。是的,都是方程表示。即是可以函式表示,我們...