※ 引述《laiDark (Larry)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: 买书自修C++到现在
: 在学习指标方面有点苦手
: 遇到书上不懂 第一时间也会google看看不同的解释
: 在动态内存配置上 书的内容是:
: 取得一块内存空间给指标使用,让指标所指的是自己的专用空间
: 这个时候我就很纳闷 所以指标一开始是没有占有内存位址吗?
no
: http://ppt.cc/mIQ3 http://ppt.cc/qRVJ
: 在这两个网站上面,看到指标还是有自己的内存位址
: http://ppt.cc/4qlJ 在这边理解动态内存配置
: 所以我是否能理解成 :
: 指标本身占有内存位址,
: 若是要使指标能够储存资料(非内存位址)时,就需要动态内存配置
: 这样的说法是否正确?? 有错误的地方拜托告诉我
not exactly
: 另外 在书上面看到op这个比较运算子
: 操作 功能 运算结果
: 位址op位址 求出二位址值的大小 假或真
: 但我在code block上面打op 只告诉我尚未宣告op..
: 我google也是查不到op的资料
: 让我怀疑是否有这个比较运算子.....
没看过。
记得很多书都是这样写的:
指标指向某一块内存,指标的值为某一块内存的位址。
于是乎下面这程式应该可以解你的惑:
http://ideone.com/e5rBng
#include <iostream>
using namespace std;
int main()
{
int i = 5;
int* p;
cout << "pointer p is " << *p << " at " << (void*)&p << " and size is "
<< sizeof(p) << endl;
p = new int;
//*p = 10;
cout << "pointer p is " << *p << " at " << (void*)&p << " and size is "
<< sizeof(p) << endl;
delete p;
p = &i;
cout << "pointer p is " << *p << " at " << (void*)&p << " and size is "
<< sizeof(p) << endl;
return 0;
}
其中有一些重点:
可以宣告一个指标不指向某一块内存,于是乎他的值是垃圾值。
所谓动态new一块内存意思就是要让指标有个地方可以指向。
如果你不new,那就拿一个已经定义过的变量让指标指向该变量的内存。
请记得一个观念,
如果今天你是要有效运用指标做事情的话,他必须指向某一块内存。
这一块内存可以用new的,也可以是现成已定义过的。