常数是没有地址还是没有确定的地址?那他在内存里是怎么储存的呢?
有地址,但你不能寻址.跟没有一样
嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
有地址,但你不能寻址.跟没有一样
#include<iostream.h>
int main()
{
//int *p;
//*p=10;//非法操作,p不能这么取址
//要是想强行赋一个地址给*P可以用下面这个语句。后果自己想...
int* p=(int*)10
cout<<*p<<endl;
returen 0;
}
为什么运行时出错
[此贴子已经被作者于2006-7-9 15:37:05编辑过]
#include<iostream>
using namespace std;
int a=110;
int b=119;
void main()
{
int *p;
p=(int*)4280416;//强制将4280416这个指定地址赋给p
cout<<"强制地址访问前a,b值: ";
cout<<a<<","<<b<<endl;
*p=8;
cout<<*p<<endl;
cout<<"强制地址访问后a,b值: ";
cout<<a<<","<<b<<endl;
}
这段程序不可移植!!!
以上是强制地址访问的一个小例子,在我的机器上通过强制地址访问修改了a的值,
有地址,但你不能寻址.跟没有一样
“有地址,但你不能寻址.跟没有一样”这句话值得探讨!按照c++编译器的规则有2种常量定义方式
其一:
#define PI=3.14;
PI(本质是宏)如果也看成常量的话,那么PI是没有地址可言的,编译器在遇到PI的地方用3.14替换它,所以没有地址
其二:
const int a=3;
这里的a本质还是一个变量,只是被限制了修改。但是a的地址还是可以取出来的(也就是可以寻址)!!!只是不能修改而已。要不然也没有别名(引用)这一说了。下面这个程序可以看出解释常量的地址问题
#include <iostream>
using namespace std;
void main()
{
const int a =10;
cout<<&a<<endl; //显示a的地址
const int* b = &a; //取出a的地址赋给常量指针b,注意:指针以及下面的引用前一定要用const修饰
cout<<*b<<endl;
const int& c= a; //引用的本质就不详细解释了吧???
cout<<c<<endl;
}
笔误
#define PI 3.14