#include<iostream> using namespace std; void main(){ const int a =5; const_cast<int *>(&a); }

为什么要这样写才可以赋值 ,这又是什么意思

第1个回答  2012-06-09
#include<iostream> 这是输入输出库函数文件,include就是包含的意思,就是把iostream.h这个库函数文件包含到本程序中用,一般程序需要输入或输出就要把该文件包含进来。
using namespace std; 这是命名空间,正规的C++要写上这句,C语言没有这项,这个比较复杂,你要先学好基础,这个以后就会学到。
void main() 这是一个主函数的定义,main就是主函数的名称,void表示main函数类型为空类型,还有int整型、char字符型等,用void的话最后不用写上返回值(return 0;),()就是函数参数,可有可无,根据实际而定。
{ const int a =5; const_cast<int *>(&a); } 这是主函数所定义的所有语句,整个叫函数体。追问

我倒。。。哥 我只要你解释 const_cast 就行了。。。其他的我都知道 你这说的是什么

追答

const int a =5; a显然是一个常变量
const_cast(&a); const_cast是C++标准转换符,
一、常量指针被转化成非常量指针,并且仍然指向原来的对象;   
二、常量引用被转换成非常量引用,并且仍然指向原来的对象;   
三、常量对象被转换成非常量对象。

追问

如何将常量对象被转换成非常量对象。 求例子

追答

class B   {   public:   int m_iNum;   B() {}   };   void foo()   {   const B b1;   //b1.m_iNum = 100; //compile error   B b2 = const_cast(b1);   /* 也可以做如下转换,体现出转换为指针类型 */   B *b3 = const_cast(&b1);   /* 或者左侧也可以用引用类型,如果对b3或b4的数据成员做改变,就是对b1的值在做改变 */   B &b4 = const_cast(b1);   b2. m_iNum = 200; //fine?   }   int main()   {   foo();   return 0;   }   上面的代码编译时会报错,因为b1是一个常量对象,不能对它进行改变;

追问

别百度了 这代码。。。我早看过了 根本不成功

c++中const_cast的问题
const_cast<int >(a)返回的是右值,不能被修改,改成 const_cast<int &>(a)才可以

程序中 常量的表示方式
例如定义一个int常量:const int a = 5;,这里 a 为 const int 类型。类型有const修饰时,编译器会对修改此数据的行为视为编译错误。因此把const数据作为常量使用。另外还有字符\/字符串字面量:类似'a'或"aaa"的字符\/字符串为字面量。字面量在C语言中不是常量(在C++中是常量),因为C语言标准...

在c++使用swap函数需要怎么样的头文件
使用swap函数需要#include<iostream>头文件。示例:include<iostream> \/\/usingnamespacestd;intmain(intargc,char*argv[]){ inta=5;intb=8;std::swap(a,b);std::cout<<a<<""<<b<<std::endl;return0;}

关于易语言错误10002
using namespace std;void main(){ const int length = 50;unsigned int a[length] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; \/\/高位在后 const int x = 10; \/\/需要转化为的进制 const int step = 256; \/\/原先的进制 int high = length - 1; \/\/值不为零的最大下标 ,...

c++类里定义的字符型数组const char a[5]怎么赋值?
在 c++ class 里,也 用 c 语言 的 同样 方法。只是 头文件 要包含:include<iostream> include <string> using namespace std;include <stdio.h> --- 程序例子:include<stdio.h> int main(){ const char a[5]={'X','Y','Z','1','2'};int i;for (i=0;i<5;i++) printf...

C语言的贪吃蛇源代码
#include<iostream>#include<windows.h>#include<time.h>#include<conio.h>using namespace std;void readini(FILE **fphead, int *score, char *argv[]) \/\/创建或打开一个和运行文件对应的ini文件,读取最高纪录{ char filename[200],*pfilename; int flag=-1,i; strcpy(filename,argv[0]); for(i...

#include<iostream> using namespace std; namespace a{ class c{ p...
三处改动,已注释:include<iostream> using namespace std;namespace a{ class c{ public:c():i(0){} c(int j):i(j){} ~c(){} int geti(){return i;} int seti(int j){i=j;} friend void func(const c&);private:int i;};void func(c&); \/\/增加声明 } void a::func(...

int main() { int a=5; cout<<a++<<++a<<a++<<endl; cout<<a<<endl...
第一个a++输出a的值5,然后自加1,a的值变为6;第二个++a先把a自加1值变为7,然后输出a的值7;第三个a++输出a的值7然后a自加1,其值变为8;最后 cout<<a<<endl;输出a的值8。

用C语言任意输入5个数,求其中的最大值,并打印输出。
#include<iostream> usingnamespacestd;int main(){ int a,b,c;cout<<"输入五个整数";cin>>a>>b>>c;if(a>b){ if(c>a)cout<<"最大整数是:"<<c<<endl;else cout<<"最大整数是:"<<a<<endl;} if(b>a){ if(c>b)cout<<"最大...

#include<iostream> #include<cmath> using namespac
cin>>c>>'\\t'这不行,>>'\\t'是错的。将空格键作为字符输入:在C语言中,可以用gets()函数,先定一个用于存字符串的数组 s][10] 再类似scanf的调用 gets(s) 这样除了回车以外的的字符串就都可以存入s中了

相似回答