C语言中,使用一个结构体之前,要用memset把各个位清零???
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,使用一个结构体之前,要用memset把各个位清零???相关的知识,希望对你有一定的参考价值。
这是为什么???
这是在对结构体进行初始化,下面是对memset的详细解释:原型: void *memset(void *s,int ch,size_t n);
头文件:#include<string.h>
作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,该函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。,它是对较大的结构体或数组进行清零操作的一种最快方法。 参考技术A 初始化用的。
确保你使用的这块内存已经初始化了,否则结构体这块内存里面是随机值,容易误用导致不可预知的后果,严重的可能导致程序崩溃。追问
memset是自动隐藏进行的,还是需要人为来设定这个memset这个步骤的?
追答人为的。c/c++的初始化需要手动写代码。
obj-c和java是编译器帮忙做的。
memset必须手动执行,不是自动的。
声明后立刻初始化变量是一个非常重要的良好习惯。
C++的话可以通过构造函数来做。 参考技术C 那叫初始化
c语言数据结构中结构体定义问题
typedef struct student
int num;
struct student *next;
student;
如题中,struct student还没被定义出来,为什么就可以用来定义*next了?如果是这样,*next到底是什么类型?
struct student 这个结构体?
next是指向struct student结构的指针类型。一般像这种用法,都是用在单向链表的结点结构体中,next用于指向下一个结点。
next不是基本数据类型的指针,而是结构体指针,指针不一定只能指向基本类型,它可以指向任意形式的内存空间。
next可以指向它所属的结构体本身,这样就是形成一个只有一个结点的单向循环链表。 参考技术A next 只是一个地址
他可以是任意结构 不是因为未定义 而他地址指向的不能代表未定义的student结构体
只是代表一个地址而已 不同的是地址后面存放的是什么
哥哥 你别老局限与C语言的结构 指针代表的是地址 他指向的可以是任意结构
以上是关于C语言中,使用一个结构体之前,要用memset把各个位清零???的主要内容,如果未能解决你的问题,请参考以下文章