|
发表于 2003-7-29 21:16:48
|
显示全部楼层
最初由 EvilSeed 发表
libinary:
理解了你的说法,但是如果按照你的说法来做的话那么在一个语句里面定义两个指针是不是这样呢:int* pt1,pt2;这样对么,好像不对吧。请指点一下。
建议去看一下 Think in c++ ,里面讲的很明白。
关于指针的定义:
int* ip;
可以这样理解:
开始先指定类型名(type name),这里是 int ,然后不是急于给出 identifier (这里是 ip) ,这时你告诉编译器:" Wait,it's a pointer",在 type 和 indentifer 插入一个 * 号.这样编译器就能够知道你定义的是一个指针.
int* pt1, pt2;
这样定义是错误的,相当于:
int* pt1;
int pt2;
正确的方法应该是每行定义一个指针:
int* pt1;
int* pt2;
首先指针也是变量,特别之处在于它所保存的是其他变量的地址.
举例说明:
- // About pointer
- #include <iostream>
- using namespace std;
- int main() {
- int x = 47;
- cout << "x = " << x << endl; // x 的值
- cout << "&x = " << &x << endl; // x 的地址
- int* p = &x; // 定义指针 p,并初始化
- cout << "p = " << p << endl; // p 的值
- cout << "*p = " << *p << endl; // 解引用 p
- cout << "&p = " << &p << endl; // 指针 p 的地址
- }
复制代码
屏幕输出:
x = 47
&x = 0x22ff6c
p = 0x22ff6c
*p = 47
&p = 0x22ff68
|
|