新微赢技术网
标题:
这样赋值没错?为什么呢?
[打印本页]
作者:
一世豪杰
时间:
2009-11-4 02:26
标题:
这样赋值没错?为什么呢?
这样赋值没错?为什么呢?我以为常量不能重新赋值,可是下面的程序可以得到答案
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;
}
作者:
幸福乐园
时间:
2009-11-4 02:26
const int b=2;是常量。不能再赋值。
const char *p2="bbb";是常量指针,不可以写指针地址内的数据,但是好象可以改指针指向的地址
如果改成const char * const p2="bbb";就安全拉
作者:
梦缘o☆无恒
时间:
2009-11-4 02:26
如楼上所说,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修改后面的值,也不能将指针指向其他的地方。
作者:
斷々弦
时间:
2009-11-4 02:26
区分一下:指针常量和常量指针这两个概念
另外,再理解这下这句:const指针所指对象的值能否修改取决于所指对象类型是否为const
作者:
→大虾米々
时间:
2009-11-4 02:26
请帮忙分析这个程序错的原因
#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;
}
作者:
小新就是我
时间:
2009-11-4 02:26
不好意思 与题无关,发新贴发错了
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2