c語言中如何將結構中變數清空,在C語言中如何把陣列清空

時間 2021-12-21 10:40:22

1樓:夏老師問一問

可以利用memset函式對變數進行清空操作。

memset()函式原型是extern void *memset(void *buffer, int c, int count)

buffer:為指標或是陣列,

c:是賦給buffer的值,

count:是buffer的長度.

這個函式在socket中多用於清空陣列.如:原型是memset(buffer, 0, sizeof(buffer))

memset 用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為『 』或『/0』;

例:char a[100];memset(a, 『/0』, sizeof(a));

memset可以方便的清空乙個結構型別的變數或陣列。

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的記憶體位址溢位。

2樓:刺友互

1、首先,我們寫好整個函式的框架,也就是標頭檔案和main函式。

2、然後我們寫上指標變數的型別。

3、然後我們輸入星號識別符號。

4、接下來我們輸入指標變數名。

5、接下來分號結束。

6、接下來我們就可以將直接拿來使用。

3樓:喜歡種蘑菇

c語言中,使用memset函式來進行初始化。

擴充套件資料:

memset是計算機中c/c++語言初始化函式。作用是將某一塊記憶體中的內容全部設定為指定的值, 這個函式通常為新申請的記憶體做初始化工作。

常見錯誤:

第一:memset函式按位元組對記憶體塊進行初始化,所以不能用它將int陣列初始化為0和-1之外的其他值(除非該值高位元組和低位元組相同)。

第二:memset(void *s, int ch,size_t n);中ch實際範圍應該在0~~255,

因為該函式只能取ch的後八位賦值給你所輸入的範圍的每個位元組,比如int a[5]賦值memset(a,-1,sizeof(int )*5)與memset(a,511,sizeof(int )*5) 所賦值的結果是一樣的都為-1;

因為-1的二進位製碼為(11111111 11111111 11111111 11111111)而511的二進位製碼為(00000000 00000000 00000001 11111111)後八位都為(11111111),所以陣列中每個位元組,

如a[0]含四個位元組都被賦值為(11111111),其結果為a[0](11111111 11111111 11111111 11111111),即a[0]=-1。

因此無論ch多大只有後八位二進位制有效,而後八位二進位制 [2]  的範圍在(0~255)中改。而對字元陣列操作時則取後八位賦值給字元陣列,其八位值作為ascii [3]  碼。

第三: 搞反了 ch 和 n 的位置.

一定要記住如果要把乙個char a[20]清零,一定是 memset(a,0,20*sizeof(char));

而不是 memset(a,20*sizeof(char),0);

第四: 過度使用memset.

4樓:匿名使用者

c語言中用memset()函式可清空結構體中的資料如:struct data

;struct data  a, b[10];

注意第乙個引數是指標型別,a不是指標變數,要加&

memset( b, 0, sizeof(b) );  //b是陣列名,就是指標型別,不需要加&

memset為記憶體填充函式,包含在標頭檔案中,可以用它對一片記憶體空間逐字節進行初始化,其原型為  void *memset(void *s, int v, size_t n);

這裡s可以是陣列名,也可以是指向某一內在空間的指標;

v為要填充的值;

n為要填充的位元組數;

5樓:達拉然**

data d1;

memset(d1,0,sizeof(data));

這樣就可以了。

記得加標頭檔案

在c語言中如何把陣列清空

6樓:一嘆

c語言貌似沒有把陣列清空的方法啊,或許你可以清除就把它賦值為0,這樣在形式上實現了清楚,不然的話只有動態申請的記憶體可以釋放。

7樓:沃英傑

int a[4] = ;

1、 通過陣列遍歷,逐個賦值為0。

定義迴圈變數int i;

for(i = 0; i < 4; i ++)a[i]=0;

該程式功能為遍歷陣列a,逐個將元素賦值為0,實現清空效果。

8樓:風若遠去何人留

有兩種方法可以實現。

為方便說明,定義整型陣列a,並實現將a清空。

int a[4] = ;

1、 通過陣列遍歷,逐個賦值為0。

定義迴圈變數int i;

for(i = 0; i < 4; i ++)a[i]=0;

該程式功能為遍歷陣列a,逐個將元素賦值為0,實現清空效果。

2、 借助記憶體賦值函式memset,整體賦值為0。

void *memset(void *dst, int value, size_t size);

這個函式的功能為將src上,大小為size位元組的資料賦值為value。需要注意的是,該函式賦值是以位元組為單位的。

呼叫該函式時需要引用標頭檔案string.h,即#include

清空陣列的**為

memset(a,0,sizeof(a));

9樓:匿名使用者

初始化時可以這樣

a[4]=;

或者memset(a,0,sizeof(a));

賦值時可以這樣:

memset(a,0,sizeof(a));

memset需要#include

c語言 如何將所有結構陣列的變數全部清為0

10樓:聽不清啊

需包含或

void *memset(void *s, int ch, size_t n);

函式解釋:將s中當前位置後面的n個位元組 (typedef unsigned int size_t )用 ch 替換並返回 s 。

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

memset(結構陣列名,0, sizeof(結構陣列名) );

11樓:手機使用者

用memset memset(array, 0, length of you array);

12樓:紅州席妮

東南三菱翼神外型尤其亮眼,張揚的外表盡顯運動個性,翼神車的外觀,時尚漂亮的很」;內飾布局簡潔明快,細節方面做工有待進一步提高;車內空間寬敞,乘坐舒適,但是後備箱空間不是很大;操控方面,方向盤指向精準,掛檔平順,底盤紮實,懸掛偏硬;該款車型的隔音效果不是很好,高速行駛噪音比較大。翼神搭載原裝全鋁進口4b1系列1.8l/2.

0l發動機,進排氣同時採用mivec技術,可在任何轉速範圍內,調節氣門正時達到最佳表現,在加強該車的動力的同時也實現了低油耗。

c語言中,如何將結構體裡的資料 定義 為全域性變數,因為我在其他檔案中要用到這些變數

13樓:小鹿小梨

使用前宣告這些變數即可(使用extern關鍵字表示是外部定義過的變數)。但要注意,全域性變數只能定義一次,否則就會犯重複定義的錯誤。

/* 示例 */

file1.c

int i, j; //定義全域性變數

char c;

void fun( )

file2.c

extern int i,j; //外部變數宣告extern char c;

void func1( )

14樓:

直接把結構體定義成全域性變數就行,哪個檔案需要就extern

15樓:無名逃兵

把結構的定義寫到頭檔案裡邊,然後再其他檔案裡#include就行了

16樓:你丶好

只要將結構體宣告放在全域性變數處

其他用法與全域性變數相同

17樓:小小鳥

把結構體定義在.**件中也就是標頭檔案中

18樓:匿名使用者

//main.c

#include

#include

#include "extern.h"

int print(char *str,test t);

test t=;

int main()

//extern.h

#ifndef extern_h_included#define extern_h_includedtypedef structtest;

extern test t;

extern int print(char *str,test t);

#endif // extern_h_included//extern.c

#include "extern.h"

#include

//struct stu std1;

//extern float inta;

int print(char *str,test t)

19樓:匿名使用者

你定義乙個全域性的結構體變數噻

20樓:己飢己溺

fortware 

碼齡8年

關注該死的結構體,折騰了哥快兩小時!!!在此總結一下。

假設a.**件定義結構體:

struct test

;那麼要在b.c檔案中呼叫該怎麼寫呢?

需要兩步:

1、標頭檔案包含

#include "a.h"

2、先定義乙個結構體變數(注意是定義,不是宣告)struct test c;

2、在b.c檔案中宣告要呼叫的結構體變數(注意是宣告,宣告為全域性變數)

extern struct test c;

3、然後就可以給結構體成員賦值

/*成員賦值*/

c.a = 1;

c.b = 2;

當然,如果變數定義為結構體指標變數,則變成如下:

/*定義*/

struct test *c;

/*宣告*/

extern struct test *c;

/*成員賦值*/

c->a = 1;

c->b = 2;

另外還有另乙個變種,使用typedef 定義結構體typedef struct test

result;

/*定義*/

result c;

/*宣告*/

extern result c;

/*成員賦值*/

c.a = 1;

c.b = 2;

result是乙個結構體型別,不是結構體變數,定義變數like this :result y0,y1;y0、y1才屬於結構體變數。實際上 result = struct test全文

在c語言中如何把陣列清空,在C語言中如何把陣列清空

一嘆 c語言貌似沒有把陣列清空的方法啊,或許你可以清除就把它賦值為0,這樣在形式上實現了清楚,不然的話只有動態申請的記憶體可以釋放。 沃英傑 int a 4 1 通過陣列遍歷,逐個賦值為0。定義迴圈變數int i for i 0 i 4 i a i 0 該程式功能為遍歷陣列a,逐個將元素賦值為0,實...

c語言如何將變數寫入檔案,C語言中如何從檔案讀取資料並賦值到變數?

多爾安巨集教 原因 使用fopen時引數不正確,你是用 w引數,若檔案存在則檔案長度清為0,即該檔案內容會消失。每次都是重新清空並寫資料,將w修改為a即可.fopen函式說明見下方 file fopen const char path,const char mode 編輯本段 函式說明 引數path...

c語言中如何將中文字元倒序輸出,C語言中如何將中文字元倒序輸出

先用strrev庫函式把整個字串倒過來,然後利用漢字編碼為負數的特點判斷為漢字的倒序連續輸出兩個字元即可達到目的。舉例 如下 include stdafx.h if the vc 6.0,with this line.include stdio.h include string.h int main...