【博客大赛】《C和指针》摘抄整理型笔记四
          
            时间:10-30 11:21 阅读:1579次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介:memxxx函数提供了类似字符串函数的功能,但它们可以处理包括NUL字节在内的任意字节。这些函数都接受一个长度参数。
               
                        
          
            29. memxxx函数提供了类似字符串函数的功能,但它们可以处理包括NUL字节在内的任意字节。这些函数都接受一个长度参数。
 memcpy从源函数向目标函数复制长度参数指定的字节数。
 memmove函数执行与memcpy相同的功能,但它能正确处理源参数与目标参数出现重叠的情况。
 memcmp函数比较两序列的字节。
 memchr函数在一个字节序列中查找一个特定的值。
 memset函数把一序列字节初始化为一个特定的值。
30. 结构成员的访问。直接访问用点操作符(.),左操作数就是结构变量的名字,右操作数就是需要访问的成员的名字;间接访问用箭头操作符(->),左操作数必须是一个指向结构的指针,右操作数同点操作符。
31. 结构自引用:
 struct SELF_REF1
 {
   int a;
   struct SELF_REF1 b;
   int c;
};
这种类型的自引用是非法的。这种声明进行下去,就像一个永远不会终止的递归程序。
合法的声明如下:
 struct SELF_REF2
 {
   int a;
   struct SELF_REF2 *b;
   int c;
 };
b是一个指针,而不是一个结构。事实上它所指向的是同一种类型的不同结构,可以用来实现更高级的数据结构,如链表和树。
32. 警惕下面的陷阱:
 typedef struct
 {
   int a;
   SELF_REF3 *b;
   int c;
 } SELF_REF3;
这个声明的目的是为了这个结构创建类型名为SELF_REF3. 但是它失败了,因为类型名直到声明的末尾才定义,所以在结构声明的内部,它尚未定义。
解决方案:
 typedef struct SELF_REF3_TAG
 {
   int a;
   struct SELF_REF3_TAG *b;
   int c;
}SELF_REF3;