设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1447|回复: 5
打印 上一主题 下一主题

这样赋值没错?为什么呢?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 02:26:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这样赋值没错?为什么呢?我以为常量不能重新赋值,可是下面的程序可以得到答案
void main()
{
char *p1="aaa";
const char *p2="bbb";
p2=p1;
cout<<p2<<endl;
}
但是如果给常量整型数再次赋值确实不行 ,比如下面的程序,为什么呢?
void main()
{
int a=1;
const int b=2;
b=a;
cout<<b<<endl;
}
2#
发表于 2009-11-4 02:26:17 | 只看该作者
const int b=2;是常量。不能再赋值。

const char *p2="bbb";是常量指针,不可以写指针地址内的数据,但是好象可以改指针指向的地址
如果改成const char * const p2="bbb";就安全拉
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 02:26:18 | 只看该作者
如楼上所说,const int b = 2;表明变量b是一个常量,不能够再对它进行赋值,但语句const char* p2 = "bbb",则只能说明不能通过指针p2修改"bbb"的值,如重新使p2[1] = 'a';但还是可以把指针p2指向其他的地方,如果要想使指针不能指向其他的地方,可以使用这样的语句:char* const p2 = "bbb"; 而如果使用const char* const p2 = "bbb";则达到上面的两个效果,既不能通过指针p2修改后面的值,也不能将指针指向其他的地方。
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 02:26:19 | 只看该作者
区分一下:指针常量和常量指针这两个概念
另外,再理解这下这句:const指针所指对象的值能否修改取决于所指对象类型是否为const
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 02:26:20 | 只看该作者
请帮忙分析这个程序错的原因
#include<iostream>
using namespace std;
void swap(int *p1,int *p2)
{
    int *a;
    *a=*p1;
    *p1=*p2;
    *p2=*a;
}
void main()
{
    int a=5,b=3;
    swap(&a,&b);
    cout<<a<<" "<<b<<" "<<endl;
}
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 02:26:22 | 只看该作者
不好意思 与题无关,发新贴发错了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 05:44 , Processed in 0.121124 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表