注册 登录
编程论坛 C++教室

[求助][讨论]指针指到我头晕,大家看看我的理解对不对!

ioriliao 发布于 2007-07-01 21:08, 683 次点击

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int i = 123;
int *px = &i;

cout << "整型变量 i 的地址是: "
<< "&i = " << &i
<< endl
<< endl
<< "指针变量 px 的地址是: "
<< "&px = " << &px
<< endl
<< endl
<< "指针变量 px 的值是,即 i 的地址: "
<< "px = " << px
<< endl
<< endl;

int **pt=&px;

cout << "**pt=&px 详解: "
<< endl
<< endl
<< "首先: &px,即取得 px 的地址: " << &px
<< endl
<< "然后: 把地址: " << &px << " 赋给 pt"
<< endl
<< "那么**pt 中的 *pt 即是指向地址 " << &px
<< endl
<< "而 px 的地址是一个指针, 而且存放了变量 i 的地址: "
<< &i
<< endl
<< "所以会有: "
<< endl
<< "pt = " << pt
<< endl
<< "*pt = " << *pt
<< endl
<< "**pt = " << **pt
<< endl;

cin.get();
return 0;
}

5 回复
#2
野比2007-07-01 21:22
指针变量px值, 即i的地址是   *px, 不是px
#3
天空の城2007-07-02 13:47

楼上错了,本来&i就是px,不是*px,*px是i的值。。。

lz的问题在于,"那么**pt 中的 *pt 即是指向地址 " << &px 这一句有问题
pt指向px,*pt即为px,指向i,**pt记为i的值.

#4
aipb20072007-07-02 18:05
#include <iostream>
using namespace std;

typedef int* pint;

int main(){
int a = 1;



pint pi = &a;
pint *ppi = &pi;

cout << &a << endl;
cout << pi << endl;
cout << *ppi << endl;
cout << **ppi << endl;
system("pause");
}

这样是不是好了解多了?把pint看成独立的类型。
#5
ioriliao2007-07-02 19:45
- -! 其实我是理解那原理的,只是我不知道我这样的表达有没有问题.
#6
野比2007-07-02 20:19
呵, 不好意思.. 说错了... 当时在想另一个问题来着...
1