C语言中,使用一个结构体之前,要用memset把各个位清零???

这是为什么???

这是在对结构体进行初始化,下面是对memset的详细解释:
原型: void *memset(void *s,int ch,size_t n);
头文件:#include<string.h>
作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,该函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。,它是对较大的结构体或数组进行清零操作的一种最快方法。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-02-16
初始化用的。
确保你使用的这块内存已经初始化了,否则结构体这块内存里面是随机值,容易误用导致不可预知的后果,严重的可能导致程序崩溃。追问

memset是自动隐藏进行的,还是需要人为来设定这个memset这个步骤的?

追答

人为的。c/c++的初始化需要手动写代码。
obj-c和java是编译器帮忙做的。

本回答被提问者采纳
第2个回答  2013-07-30
C语言的结构体必须手动初始化,其实你不memset也可以的,但是结构体里面的数据将不可知(不是随机值),万一你忘记给其中的数据成员赋值就使用,会导致不可预知的后果。
memset必须手动执行,不是自动的。

声明后立刻初始化变量是一个非常重要的良好习惯。

C++的话可以通过构造函数来做。
第3个回答  2013-07-30
那叫初始化

C语言中,使用一个结构体之前,要用memset把各个位清零???
这是在对结构体进行初始化,下面是对memset的详细解释:原型: void *memset(void *s,int ch,size_t n);头文件:#include<string.h> 作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,该函数通常为新申请的内存做初始化工作, 其返回值为...

c语言memset初始化结构体问题
memset的第一个参数为一个指针,因此你需要memset(&a, 0, sizeof(a))这样去操作 memset的具体使用你可以通过在命令行输入:1 man memset 来查看。全局变量和局部变量时都可以的。代码见下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 include<stdio.h> include <string.h> typedef struct ss ...

c语言如何将结构体清零?
memset参数1是要清零的内存起始位置,参数2是用什么数去填充(0只是其中一种情况),参数3表示填充个数 memset是计算机中C\/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向...

C语言 如何将所有结构数组的变量全部清为0
void *memset(void *s, int ch, size_t n);函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。memset(结构数组名,0, sizeof(结构数组名)...

用C语言初始化的时候,怎么把所有的寄存器清零!
void *memset( void *buffer, int ch, size_t count );功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如:memset( the_array, '\\0', sizeof(the_array) );这是将一个数组的所以分量设置成零的很便捷的方法。

C语言中,memset函数都可以给什么类型的数组清零?
函数原型:void *memset(void *s, int c, size_t n);函数解释:将s中前n个字节替换为ch并返回s;memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。参考资料:http:\/\/baike.baidu.com\/view\/982208.htm ...

求C语言memset的具体用法,什么时候必须用,什么时候可以不用以及可以用...
strcpy就只能拷贝字符串了,它遇到'\/0'就结束拷贝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘\/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出。5.补充:一点心得 memset可以方便的清空一个结构类型的变量或数组。如:struct sample_...

【零基础学C语言】内存知识总结:memset函数和calloc函数
内存管理在C语言编程中至关重要。memset函数(清零函数)是一个通用的初始化工具,它接收一个void*类型的指针s,一个整数c(通常为0)和要填充的字节数n。它能快速为数组或结构体清零,虽然一般情况下,直接为基本类型初始化就足够,但如果需要对大内存块操作,memset更为高效。但要注意,对指针初始化...

memset函数及其用法,C语言memset函数详解
对于数组初始化,直接赋值更简便。而memset()在处理较大数组或结构体时,作为快速清零初始化方法,直接对内存进行操作,效率更高。有人疑惑,是否可以使用 memset() 初始化字符串数组,尤其是是否可以将参数 c 设置为 '\\0'。答案是可以的。由于整型和字符型在内存中是互通的,'\\0' 在内存中的值为0...

memset()函数
一、函数的基本功能 memset函数用于将一段内存区域设置为特定的值。这个函数在C标准库中定义,接受三个参数:一个目标内存区域的指针、需要填充的字节数以及一个源字节值。通过调用memset,程序员可以将内存区域初始化为特定的字节值,通常用于初始化数组或结构体。二、函数的使用方式 使用memset函数时,...

相似回答