. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->C/C++语言
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  谁帮忙解释一下指针的指针问题  [待解决] 回复[ 2次 ]   点击[ 1035次 ]  
crazyman
[帖 主]   [ 发表时间:2008-11-09 17:20 ]   [引用]   [回复]   [ top ] 
荣誉值:152
信誉值:3
注册日期:2008-01-24 21:26
#include "stdafx.h" 
#include <iostream> 
using namespace std; 
void fun (char **q) 
{  cout < <(*q) < <endl;  //这里的输出怎么会是hello zhouguochen呢? 
                      //**q指向指针p的地址,可是我想不明白为什么这里会是这个输出? 
                      //还有q怎么会是地址呢?麻烦解释一下原理,谢谢! 
    cout < <(q) < <endl; 

void main() 

    char * p; 
    p="hello zhouguochen"; 
cout < <(p) < <endl;//这里怎么理解?我看过谭浩强的书了 上面有这样的定义, 
                        //但是没解释原理,这里的输出为什么也是和上面(*q)一样呢 
cout < <*(p+1) < <endl; 
fun(&p); 
    
}
lloveasm
[第1楼]   [ 回复时间:2008-11-09 19:00 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2008-08-31 11:07
char *str = "hello world";
        char **strP = &str;

        cout << str << endl;
        cout << *strP << endl;
younggay
[第2楼]   [ 回复时间:2008-11-10 17:06 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
1.对于指针,打印字符串的时候,就以这个指针指向的内容开始打印,直到遇到“\0”结束。
2.q是指向了(指针P)的一个指针,那么*q就相当于p,所以cout<<p<<endl和count<<*q<<endl是一样的。

3.//还有q怎么会是地址呢?麻烦解释一下原理,谢谢!
首先,q是变量,是一个指向指针的指针,q中保存的是一个指针变量的地址,所以,q内容是地址,一个指针变量的地址。你要是打印q,那么应该打印出来的是q指向的内容,也就是一个地址。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved