指针问题的一点体会(区别 [指向指针的指针] 与 [指针的指针] .)

原创 2003年06月15日 14:36:00

     "指向指针的指针"与"指针的指针"好象是一个意思,我想就此说明一点休会。

    int   a=3;
    int   *p=&a;
    int   *pp=&p; 


   其实最后一句的int *pp=&p也是给一个指针赋初值,不过这个初值是一个"指针的地址”,而不是通常的“变量地址”(所以此时编译器会有警告!),但是还是可以通过的。
 
   可是,从使用的观点来看的话,就知道这个pp指针没有任何用处,因为pp指是指针p的地址,也就是&p(即pp=&p);那么*pp=&a,即*pp表示变量a的地址(不能说pp指向变量a)。

   如此看来,要操作变量a的话,可以使用*p来操作(如*p=8),但是通过pp则不行,因为*pp只是表示变量a的地址,并不能操作该地址中的内容,要在地址前加*来表示操作地址内的内容,但这是是编译器不充许的,因为你定义的时候,pp只是个指针,它只能运用一次*操作符。

   这种情况看上去就象是,看得到,却摸不到(不能操作变量).

   所以如上定义一个指针来指向一个指针,是没有多大的用处的,他唯一可以改变的就是指针pp的指向了(如*pp1=1000,则指针pp指向的地址变为1000),但这种改变是危险的和致命的,也是没有什么实际用处的,因为pp指向的改变是很容易的(根本没有必要通过定义一个指向自己的指针来改).

  如下:

    int   a=3,b;
    int   *p=&a;
    int   *p1=&b;
    p=p1;  


   所以,如开头定义一个指针来指向指针的正确方法应该如下:

    int   a=3;
    int   *p=&a;
    int   **pp=&p; 

   如上,pp是个指针的指针.他才是可以在程序中起到作用,例如**pp=8,则a=8;等同于*p=8;

   欢迎大家指针说法错误之处,以加强更深一层的认识!

 

如何理解指向指针的指针?

问题:如何理解指向指针的指针? 我在一篇教程中看到下面这段,它描述指向指针的指针是如何运作的。 引用文章相关段落如下: int i = 5, j = 6, k = 7; int *ip1 = &...
  • jb19900111
  • jb19900111
  • 2014年03月04日 11:00
  • 1345

数组的指针、指针数组以及指向指针的指针

考虑数组的指针的时候我们要同时考虑类型和维数这两个属性。换一句话,就是说一个数组排除在其中存储的数值,那么可以用类型和维数来位置表示他的种类。一维数组在c和c++中数组的指针就是数组的起始地址(也就第...
  • kyo34080800
  • kyo34080800
  • 2011年03月17日 08:30
  • 3260

C++指针(Pointer)的理解(指向指针的指针、指向引用的指针)

在c++中的指针占据着重要的地位,在以后的c++的编程会j
  • u010807583
  • u010807583
  • 2014年10月23日 15:05
  • 4402

指向指针的指针的内存分配与释放

原文地址::http://hi.baidu.com/b_a_i_du/blog/item/7125a7d35ca0afd6a8ec9af6.html?   相关网帖    1.给指向指针的指针分...
  • xqhrs232
  • xqhrs232
  • 2012年06月02日 09:42
  • 1346

指向结构体的指针和指向结构体指针的指针

刚才用结构体的指针,操作内存出错了,记录一下。  struct T *ptr;是指向一个结构体的指针,也可以当做一个结构体数组来用。 可以把结构体当做 int 来看,int* 类型即可以指向一个整数,...
  • jphaoren
  • jphaoren
  • 2010年09月28日 11:21
  • 9647

【C语言】指向指针的指针 char * *使用技巧

需求: 因为需要定义一个字符串数组,用来存放多个字符串,于是想到使用 char **这种结构——指向指针的指针,于是编写代码如下: #include #include int main() ...
  • chenglibin1988
  • chenglibin1988
  • 2013年03月30日 20:52
  • 14183

C++实例:指向指针的指针的初始化

int **ptr = new int*[N];   for ( i = 0; i   ptr[i] = new int[N];   #include   #include ...
  • yang1994
  • yang1994
  • 2012年02月29日 17:09
  • 1668

链表添加函数中为什么要用指向链表指针的指针

在看书的时候有个函数往链表里添加节点,代码中考虑到可能给出的头指针为空,并做另外一些处理。具体代码如下: #include #include using namespace std; str...
  • shen_jz2012
  • shen_jz2012
  • 2016年02月03日 22:41
  • 4240

关于数组指针和指向数组指针的指针及其new

今天在CSDN上看到了wp123456xt对我很久以前的一篇文章——方正面试的题-找出字符串最多的分解方法http://blog.csdn.net/shizhixin/article/details/...
  • ShiZhixin
  • ShiZhixin
  • 2011年12月07日 17:28
  • 11139

指向指针的指针申请动态内存

在《高质量c编程指南》中,提到了 如果函数的参数是一个指针,那么别指望它能申请动态内存。 代码如下:#include #include void GetMemory(char *p,int num)...
  • yongheng_1999
  • yongheng_1999
  • 2016年05月25日 17:59
  • 1070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针问题的一点体会(区别 [指向指针的指针] 与 [指针的指针] .)
举报原因:
原因补充:

(最多只允许输入30个字)