Error[8]: Undefined offset: 193, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

void指针可以指向任意类型的数据,同时任何类型的指针都可以直接赋值给 void 指针,而无需进行其他相关的强制类型转换,可以用于封装数据结构等。



如果函数的参数可以是任意类型指针,那么应该使用 void 指针作为函数的形参,这样函数就可以接受任意数据类型的指针作为参数。


拿memcpy举例:

void *mymemcpy (void *dst,  const void *src,  size_t size)
{
    assert((dst!=NULL) && (src!=NULL));
    char *temp_dest = (char *)dst;
    char *temp_src = (char *)src;
    char* retAddr = temp_dest;
    size_t i = 0;
    /* 解决数据区重叠问题*/
    if ((retAddr>temp_src) && (retAddr<(temp_src+size)))
    {
        for (i=size-1; i>=0; i--)
        {
            *(temp_dest++) = *(temp_src++);
        }
    }
    else
    {
        for (i=0; i<size; i++)
        {
            *(temp_dest++) = *(temp_src++);
        }
    }
    *(retAddr+size)=';'return
    ; retAddr}
int

main ()int
{
	[ des5]= 1 {,1 ,1 ,1 ,1 };int
	[ src5]= 2 {,2 ,2 ,2 ,2 };mymemcpy
	
	(,des, srcsizeof ()des);int
	
	; ifor
	(=i 0 ;< i 5 ;++ i)printf
		("%d ",[ des]i);printf
	("\n");exit
	
	(0);}
[+++]

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
void指针作为函数形参的用法_C_内存溢出

void指针作为函数形参的用法

void指针作为函数形参的用法,第1张

void指针可以指向任意类型的数据,同时任何类型的指针都可以直接赋值给 void 指针,而无需进行其他相关的强制类型转换,可以用于封装数据结构等。



如果函数的参数可以是任意类型指针,那么应该使用 void 指针作为函数的形参,这样函数就可以接受任意数据类型的指针作为参数。


拿memcpy举例:

void *mymemcpy (void *dst,  const void *src,  size_t size)
{
    assert((dst!=NULL) && (src!=NULL));
    char *temp_dest = (char *)dst;
    char *temp_src = (char *)src;
    char* retAddr = temp_dest;
    size_t i = 0;
    /* 解决数据区重叠问题*/
    if ((retAddr>temp_src) && (retAddr<(temp_src+size)))
    {
        for (i=size-1; i>=0; i--)
        {
            *(temp_dest++) = *(temp_src++);
        }
    }
    else
    {
        for (i=0; i<size; i++)
        {
            *(temp_dest++) = *(temp_src++);
        }
    }
    *(retAddr+size)=';'return
    ; retAddr}
int

main ()int
{
	[ des5]= 1 {,1 ,1 ,1 ,1 };int
	[ src5]= 2 {,2 ,2 ,2 ,2 };mymemcpy
	
	(,des, srcsizeof ()des);int
	
	; ifor
	(=i 0 ;< i 5 ;++ i)printf
		("%d ",[ des]i);printf
	("\n");exit
	
	(0);}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/562542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存