规则四如果函数的参数可以是任意类型指针,那么应声明其参数为void*
典型的如内存操作函数memcpy和memset的函数原型分别为:
void * memcpy(void*dest,constvoid*src,size_tlen);
void * memset(void*buffer,intc,size_tnum);
这样,任何类型的指针都可以传入memcpy和memset中,这也真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不论这片内存是什么类型。如果 memcpy和memset的参数类型不是void*,而是char*,那才叫真的奇怪了!这样的memcpy和memset明显不是一个“纯粹的,脱离低级趣味的”函数!
下面的代码执行正确:
//示例:memset接受任意类型指针
int intarray[100];[Page]
memset(intarray,0,100*sizeof(int));//将intarray清0
//示例:memcpy接受任意类型指针
int intarray1[100],intarray2[100];
memcpy(intarray1,intarray2,100*sizeof(int));//将intarray2拷贝给intarray1
|