标题:求助(const指针)
只看楼主
weiweiqiao
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-7-29
 问题点数:0 回复次数:11 
求助(const指针)
才学c++,多指教。 #include<iostream> using namespace std; int main() { int a,b; int const *p_1; const int *p_2; a=10; p_1=&a; b=20; p_2=&b; cout<<"*p_1=" <<*p_1 <<endl; cout<<"*p_2=" <<*p_2 <<endl; int c,d; c=30; d=40; p_1=&c; p_2=&d; cout<<"*p_1=" <<*p_1 <<endl; cout<<"*p_2=" <<*p_2 <<endl; return 0; } 输出结果: *p_1=10; *p_2=20; *p_1=30; *p_2=40; *p_2是指向整型常量的指针,其值不能改变;*p_1是指向整型的常指针,他指向的整数可以改变(摘录《21学通c++》),但是*p_1=30; *p_2=40; 而系统没有报错?
搜索更多相关主题的帖子: const 指针 int cout 
2005-08-16 22:40
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
真的很容易被你搞混淆,你的程序是完成正确的,没有什么不对的地方。

有一个地方,你必须清楚:

int const * a   和 const int * a 是一回事,

但是 const int * a  和 int * const a 就不是一回事了
看一下下面的代码,在旁边做了一些注释
#include&lt;iostream&gt;
using namespace std;
int main()
{
    int a,b;
    a=10;
    b=20;
    const int * p_1;
    int * const p_2 = &amp;b;  // here must be initialized
    p_1=&amp;a;
    cout&lt;&lt;"*p_1=" &lt;&lt;*p_1 &lt;&lt;endl;
    cout&lt;&lt;"*p_2=" &lt;&lt;*p_2 &lt;&lt;endl;
    int c,d;
    c=30;
    d=40;
    // *p_1 += 1;          // invalid
    p_1=&amp;c;
    //p_2=&amp;d;              // invalid
    cout&lt;&lt;"*p_1=" &lt;&lt;*p_1 &lt;&lt;endl;
    return 0;
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-08-17 07:28
weiweiqiao
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-7-29
得分:0 
谢谢,是我看错了。。。em03]
再次谢谢。[

maCr.Qw
2005-08-17 20:16
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
得分:0 
一个是指指针不能改变,一个是指指针的内容不可以改变!
当然这都只是对这个指针变量来说的!

差点把你忘了...
2005-08-18 11:47
Fudan_Men
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-9-14
得分:0 
不错
2005-09-14 17:48
Fudan_Men
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-9-14
得分:0 
const  char *str 是指向const变量的指针,意味着程序不能通过指针修改变量,任何对str指针所指字符数据的引用必须为只读的!const指针变量声明如下:char* const str ,它是我们在初始化后声明的不能改变自身内容的指针,它将永远保持初始值,函数不能修改指针
2005-09-14 17:56
Fudan_Men
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-9-14
得分:0 
const  char *str 指指针不能通过指针变量,但是指针自身内容可以通过赋值等操作改变,而对后者而言我们无论通过什么方式都不能改变其内容
2005-09-14 18:03
crazyer21
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-9-15
得分:0 
kai !!!!!!!!!!!!!!!!!!!!!!!!!!!! 我看出你是高手拉。。我真的很想学好C语言内和c++ 那你么QQ总得叫我们这些菜鸟能够找到你把。还是把你的E-MAIL赏下来把。嘿嘿~ 我的是rjgaoqiang@163.com 我还想有问题及时请教你呢。

我不是菜鸟,但也不是老鸟。 ~。~
2005-09-15 11:00
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
得分:0 
关于const,它在C++内的使用犹为重要而广泛,如 fun(const DataType &amp;x) const就是一例,用得叫人放100个心。

谷底深深行 ,峰顶漫漫步......@_@
2005-09-15 14:17
Fudan_Men
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-9-14
得分:0 
const是C++的一个特色,使程序更加安全,但是它的使用却也不是十全十美的,在牺牲方便性来换取安全性,有的时候是可取的,比如对那些重要数据的保护,但是至于一些局部变量,还是不要用它因为我们明明可以知道我们的程序不会改变变量的值,这样子可以减少好多因为const使用不一致而带来的麻烦
2005-09-30 12:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-25337-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025683 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved