指针

来源:互联网 发布:赚钱的软件 编辑:程序博客网 时间:2024/06/08 19:49

void指针:

void指针一般被称为通用指针或泛指针,它是C语言关于"纯粹地址“的一种约定。void指针指向某个对象,但该对象不属于任何类型。请看下例。

int * ip;
void *p;
在上例中,ip指向一个整型值,而p指向的对象不属于任何类型。
在C语言中,任何时候都可以用其他类型的指针来代替void指针,或者用void指针来代替其他类型的指针,并且不需要进行强制转换。例如,可以把char*类型的指针传递给需要void指针的函数。
当进行纯粹的内存操作时,或者传递一个指向未定类型的指针时,可以使用void指针。void指针也经常用作函数指针。
有些C代码只进行纯粹的内存操作。在较早版本的C语言程序中,这一点是通过字符指针"char*"实现的,但是这容易产生混淆,因为人们不容易判定一个字符指针究竟是指向一
个字符串,还是指向一个字符数组,或者仅仅是指向内存中的某个地址。

例如,strcpyo函数将一个字符串复制到另一个字符串中,Slcpyo函数将一个字符串中的部分内容复制到另一个字符串中。

 char *strcpy(char'strl,const char *str2);
char *strncpy(char *strl, const char*str2, siz.e_t n);

memcpyo函数将内存中的数据从一个位置复制到另一个位置。
void *memcpy(void *addrl, void *addr2,size_t n);
memcpy()函数使用了void指针,以说明该函数只进行纯粹的内存复制,包括NULL字符(零字节)在内的任何内容都将被复制。请看下例。
#include"thingie, h"                   /*defines struct thingie */
struct thingie * p_src * p_dest;
/ *... * /
memcpy{p_dest, p_src ,sizeof (struct thingie ) * numThingies );
在上例中,memcpy()函数要复制的是存放在struct thingie结构体中的某种对象op_dest
和p_src都是指向struct thingie结构体的指针,memcpy()函数将把从p_src指向的位置开始的"sizeof(stuct thingie)*numThingies"个字节的内容复制到从p_dest指向的位置开始的一块内存区域中。对memcpy()函数来说,p_dest和p_src都仅仅是指向内存中的某个地址的指针。
0 0
原创粉丝点击