Re: [问题] 指标理解与op比较运算子

楼主: bleed1979 (十三)   2014-09-08 14:57:01
※ 引述《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的,也可以是现成已定义过的。
作者: LPH66 (-6.2598534e+18f)   2014-09-08 15:00:00
补充一点: 如果要指标明确表示不指向任何东西那将它指向 0 或 nullptr 即可(用 0 有些地方要小心, 另外 NULL 跟 0 是一样的)(不过大部份状况用 0 并不会糟到哪里去就是了)
作者: laiDark (煎饺加赖)   2014-09-08 19:39:00
谢谢!! 已经理解了~ (可是那段程式不能成功运行耶....

Links booklink

Contact Us: admin [ a t ] ucptt.com