首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问指针常量和指针常量的有关问题

2012-03-08 
问指针常量和指针常量的问题.指针常量是intconst*p还是int*constp常量指针是constint*p还是其他的什么?1.

问指针常量和指针常量的问题.
指针常量是int   const   *p还是int   *   const   p;
常量指针是const   int   *p还是其他的什么?
1.我用int   const   *p做指针常量,p的值可变
eg:
int   a,b;
int   const   *p;
a=3;
b=2;
p=&a;
p=&b;
可以获得p不同的值.这是为什么?
2如果用int   *   const   p做指针常量必须采用下面的才可以通过编译.
eg
int   a=3;
int   *const   p=&a;
如果采用下面的就会有错误
int   a=3;
int   *const   p;
p=&a;
这里面有什么原因?

[解决办法]
int const *p与const int *p一样,都是指向const int的指针。
int * const p是指向int的const指针。
[解决办法]
指针常量是int * const p;
[解决办法]
const 和 type 的位置是可以互换的,
const 不能修饰 type ,
而是修饰后面的变量,所以:

const int* p; ==》int const * p;
const修饰了 *p,
*p表示一个指针指向的值,
那么 const 修饰表示这个被指向的值是 const 的,也就是常量

比较 :
int * const p;
const 修饰了 p,
也就是 p 本身是常量,
而 p 是一个指针,
那么结果就是一个指针常量,指针不可变,但是指针指向的内容是可变的 ....

其他的楼主相似的作个理解就可以了,
没有那么难的 ~
[解决办法]
常量指针是const int *p或 int const*p
[解决办法]
eg:
int a,b;
int const *p;
a=3;
b=2;
p=&a;
p=&b;
可以获得p不同的值.这是为什么?
-------------------------------------
p指向的是常量,p本身可以赋值

2如果用int * const p做指针常量必须采用下面的才可以通过编译.
eg
int a=3;
int *const p=&a;
如果采用下面的就会有错误
int a=3;
int *const p;
p=&a;
这里面有什么原因?
---------------------------------
p是常量指针,可以初始化,但是不能赋值
[解决办法]
c++中常指针和引用类似,必须先初始化指向一个地址空间。且初始化后不能在指向另一个地址。
[解决办法]
如果采用下面的就会有错误
int a=3;
int *const p;
p=&a;
这里面有什么原因?
===============
注意 这里对 p 是const 修饰的,
所以,只能的定义 p 的时候进行初始化: int *const p=&a;
而不能是 :
int *const p;
p=&a; //如果这样也可以,岂不是 p 可以任意赋值了么?那const 就没有意义了
[解决办法]
int *const p=&a;表示p是一个常量指针它指向变量a的内存。但是因为是常量指针所以不能再用p指向其他变量,如 p = &a; 错误!
[解决办法]
去看一看c primer plus
网上对这本书评价不怎么样,但是我看对指针变量的作用域相当清楚呀
本人认为这本书相当不错呀 相当值得一看

热点排行