c语言中如何将结构中变量清空

structdata{charnum[100];charname[100];intn;}这样的变量如何清空... struct data
{
char num[100];
char name[100];
int n;
}
这样的变量如何清空
展开
 我来答
刺友互
高粉答主

2019-07-12 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:73.1万
展开全部

1、首先,我们写好整个函数的框架,也就是头文件和Main函数。

2、然后我们写上指针变量的类型。

3、然后我们输入星号标识符。

4、接下来我们输入指针变量名。

5、接下来分号结束。

6、接下来我们就可以将直接拿来使用。

百度网友faadf46
高粉答主

2019-07-22 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:75.7万
展开全部

1、首先,我们首先定义四个变量。

2、然后我们开始编写需要查找的范围。

3、然后我们开始编写判断函数。

4、接下来我们编写输出函数,用printf函数代表输出。

5、接下来我们点击叹号,就代表了开始运行测试。

6、这时候我们便可以看到测试结果。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-09-05 · TA获得超过25.9万个赞
知道小有建树答主
回答量:2206
采纳率:96%
帮助的人:82.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的内存地址溢出。

参考资料来源:百度百科—memset

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喜欢种蘑菇
2019-07-01 · TA获得超过4769个赞
知道答主
回答量:71
采纳率:100%
帮助的人:4.4万
展开全部

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.

参考资料:百度百科——memset

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
推荐于2017-09-28 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6450万
展开全部

C语言中用memset()函数可清空结构体中的数据

如:

struct data 
{
char num[100];
char name[100];
int  n;
};
struct data  a, b[10];

memset( &a, 0, sizeof(a) ); //注意第一个参数是指针类型,a不是指针变量,要加&
memset( b, 0, sizeof(b) );  //b是数组名,就是指针类型,不需要加&

memset为内存填充函数,包含在<string.h>头文件中,可以用它对一片内存空间逐字节进行初始化,其原型为  void *memset(void *s, int v, size_t n);  
这里s可以是数组名,也可以是指向某一内在空间的指针;

v为要填充的值;

n为要填充的字节数; 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式