C++之父力作学习笔记3——指针

   由于工作需要转成了C#,好久没有学C++了,之前学了一段时间的C++,也写过两篇,放在博客园里的,现在有专门的C++博客,以后就在这里写了。以下是前两篇的地址
C++之父力作学习笔记1    C++之父力作学习笔记
    
   今天来简单说一下指针,可以说指针是一个难点,是一把双刃剑,也许高手才能运用自如,像我这样的菜鸟就会伤到自己。呵呵,废话少说。
   指针:对类型T,T*是“到T的指针”,也就是说,一个类型为T*的变量能保存一个类型T的对象的地址。例如:
char c='a';
char *p=&c;//p保存着c的地址

用图表示是:

这些都挺容易理解的,不幸的是,到数组的指针和到函数的指针需要更复杂的记法:
int* pi;          //到int的指针
char** ppc;       //到字符的指针的指针
int* ap[10];      //10个到int的指针的数组
int (*fp)(char*); //到函数的指针,这种函数以char*为参数,返回int
int* f(char*);    //有一个char*参数的函数,返回一个到ini的指针

   对指针的基本操作是间接引用,也就是说引用被指针所指的那个对象。这一操作也被称作间接(indirectionn)。间接运算符是(前缀的)一元*。例如
char c='a';
char* p=&c;   //p保存着c的地址
char c2=*p;   //c2=='a'
被p所指的变量是c,而c中所存的值是'a'。所以由*p赋给c2的值就是'a'.
注意:这里解释一下 间接运算符是(前缀的)一元*。这就要扯到声明的结构了。
         一个声明由四个部分组成:一个可选的“描述符”,一个基础类型,一个声明符,还有一个可选的初始式。除了函数和名字空间之外,其他声明都应该由分号结束。例如:
char* kings[]={"Antigonus","Seleucus","Ptolemy"};
这里的基础类型是char,声明符是*kings[],而初始化是={...}。
      描述符是一个开始关键字,例如:virtual和extern,它们说明了被声明事物的某些非类型的属性。
      声明符由一个名字和可选的若干声明运算符组成。最常用的声明运算符是
      *             指针          前缀
      *const     常量指针     前缀
      &            引用           前缀
      []            数组          后缀
      ()            函数          后缀




posted on 2011-07-26 11:13 Daywei 阅读(2524) 评论(0)  编辑 收藏 引用 所属分类: C++之父力作学习笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年9月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

牛人博客

搜索

积分与排名

最新评论

阅读排行榜