原创 【博客大赛】《C和指针》摘抄整理型笔记四

2014-10-9 16:05 1430 14 14 分类: 处理器与DSP 文集: C和指针
/*
读书笔记类型多种多样,有摘抄型的,有感想型的,有批注型的,有摘要型的……
现在正在研读《C和指针》,其中有很多我认为必要的知识点,摘抄并简单整理了一下,记录在这里。
*/
 
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;
 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
14
关闭 站长推荐上一条 /3 下一条