黑马程序员技术交流社区

标题: 关于指针指向指针问题 [打印本页]

作者: sen    时间: 2014-4-16 14:11
标题: 关于指针指向指针问题
本帖最后由 sen 于 2014-5-20 12:00 编辑

int a =10;
int *p=&a;

视屏中的得是指针指向指针是: int **pp= &p;
那如果我再定义一个数据 int *zhizhen= &p;这样的话与int **pp= &p;的作用是一样的吗?
作者: 王雪冬    时间: 2014-4-16 14:21
看你的代码:

  1. int a =10;
  2. int *p=&a;
复制代码

其中 p为指针类型,
而下面的:
  1. int **pp= &p;
复制代码

是指向指针类型变量的指针。
而下面的代码:
  1. int *zhizhen= &p
复制代码

是错误的,因为 int *zhizhen  其实和第二行的 int *p  是一模一样的。也是只能指向int型变量的地址。

其实你应该这么理解:
要想定义一个指向一个类型变量的指针变量,你就在要指向的变量的类型后面添加*号,这样定义。
例如: int *p;
这个p是int * 类型。即指向整型变量的指针类型。你要想在定义一个指针指向 p,
那就将p 的类型拿出来-----》int *    在这个类型后面加上 *
即: int **   ,然后用这个定义变量------》  int **PP;  
作者: 星河鹭起    时间: 2014-4-16 14:56
你这个是错误的;
int a =10;
int *p=&a;
这个代码表明 指针p指向变量a的地址

int **pp=&p
这个代表指向指针的指针pp指向指针p的地址

int *zhizhen=&p
这个代表指针zhizhen只是指向指针p的变量的地址,注意是变量地址,并不是指针的地址。和 int *p=&a 一样的。

有个方法就是,指向变量的指针是一个*,指向指针的指针是两个*,指向指针的指针的指针就是三个* 以此类推。
作者: D调的沉默    时间: 2014-4-16 18:11
沙发和板凳都讲得好完美,估计你懂了就不给你解释了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2