c语言内存填充函数 C语言内存分配函数

c语言里有memset()怎么用?需要什么头文件?

包含在 string.h头文件中

创新互联专业为企业提供罗江网站建设、罗江做网站、罗江网站设计、罗江网站制作等企业网站建设、网页设计与制作、罗江企业网站模板建站服务,10年罗江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

memset为内存填充函数,可以用它对一片内存空间进行初始化, 它可以一字节一字节地把整个数组设置为一个指定的值

其原型为

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

这里s可以是数组名,也可以是指向某一内在空间的指针;

v为要填充的值;

n为要填充的字节数,通常为sizeof(s);

使用memset时要注意的是,memset是逐字节进行填充,所以s一般为char *型。

在JAVA中有没有象C语言里的memset函数

有类似于C中的memcpy 函数的东西, System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length)。

如果是要设成缺省值如0,则java 中新开的数组本来就会全部初始化成缺省值的,主类型初始化为0,对象类型初始化为null,不用显示再去初始化了。

C语言函数调用的传参方法总结,Caller分配内存,Called填充内存

void called(int v){ v=2; }

void caller(){ int v=1; called(v); }

这种方式,called并不能改变caller里的v的值,因为called和caller的v分别是两个内存单元,因此只能单向的从caller到called传值,而不能从called到caller返回值。

void called(int *pv) { *pv=2; }

void caller(){ int v=1; called(v); }

这种方式,called能改变caller的值,因为值的内存由caller分配(int v=1;),而called能通过其指针改变这个内存的内容。

void called(int **ppv){ *ppv=malloc(sizeof(int)); }

void caller(){ int *pv=NULL; called(pv); }

这种方式,内存单元是由called分配在heap上的,想返回其地址给caller,因此caller需要提供一个地址的内存(int *pv=NULL;), 然后交由called去改变这个单元的值(called(pv))。需要注意的是,这个内存不能是在called的stack中,因为一旦called结束,栈中内存都会被销毁,其值和地址都将无效,因而只能返回在heap中的值和地址。

总之就是记住一个宗旨,如果想通过参数来获得返回值,需要在caller中为该返回值分配内存单元,然后将这个内存单元的地址传递给called函数,called函数通过改变这个地址所指向的内存值来返回所需。

c语言中函数memset()是什么意思?什么功能

memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。 memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型为:

void *memset(void*,int,unsigned);

其中void*表示地址

memset()的第一个实参是数组名,数组名作参数即数组作参数,它仅仅只是一个数组的起始地址而已。

实现第一个memset()函数调用的内存布局见图7-3。 在函数memset()栈区,从返回地址往上依次为第1,2,3个参数。第1个参数中的内容是main()函数中定义的数组ia1的起始地址。第2个参数是给数组设置的值(0),第3个参数是数组的长度(50*2)。函数返回时,main()函数的数组中内容全置为0。


当前名称:c语言内存填充函数 C语言内存分配函数
文章URL:http://ybzwz.com/article/dodosco.html