bzero和memset函数
#if defined(PJ_HAS_BZERO) && PJ_HAS_BZERO!=0
bzero(dst, size);
#else
memset(dst, 0, size);
#endif
bzero函数:
函数原型:void bzero(void *s, int n);
头文件:#include <string.h>
功能:将字符串s的前n个字节置为0,一般来说n通常取sizeof(s),将整块空间清零。
char str[10];
bzero( str, sizeof(str) );
struct node
{
char a;
int str[4];
double b;
};
struct node Test;
bzero( &Test, sizeof(Test) );//结构体的名称不是结构体的地址因此我们需要在结构体的名称前面加上&运算符
memset函数:
函数原型:void *memset(void *s,int c,size_t n);
头文件:#include <string.h> 或者#include <memory.h>
说明:将s中前n个字节替换为c并返回s
作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
1)若s指向的地址是char类型的,c的值可以是任意字符值;
2)若s指向的地址不是char类型,c的值只能是-1或者0。
内存拷贝函数:
void *memcpy(void *dest, const void *src, size_t n);
memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
指针函数和函数指针:
指针函数,一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
声明格式为:类型标识符 *函数名(参数表)
int *fun(int x,int y);
在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。
函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
声明格式:类型说明符 (*函数名) (参数)
int (*fun) (int x, int y)//函数指针是需要把一个函数的地址赋值给它
//
fun = &Function;
fun = Function;
//
x = (*fun)();
x = fun();
指针函数本质是一个函数,其返回值为指针。
函数指针本质是一个指针,其指向一个函数。