void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s。
具体实现细节:
// 把当前指针指向地址的元素全部清零
//#define N 20
//int a[N];
memset(a, 0, sizeof(a) * N);
//实现细节
void *memset(void *s, int ch, size_t n)
{
for (int i = 0; i < n; ++i)
*((char*)(s + i)) = ch;
}
编译器按照正常逻辑执行,会出现引用死循环。
如.h文件中的结构体typedef定义之后,在另外一个.h文件中未引入该头文件,则文件中不能使用typedef定义的别名。只能使用struct 结构体名称*,即结构体指针类型。
注意:必须是该结构体的指针类型。通过这个方式告知编译器:虽然未引入头文件,但是在之后的执行过程中,会让该结构体指针指向一片有效的内存空间。即不是野指针。