一个关于const的问题,同几个地址,加不加const居然不一样?!!
#include <iostream>
using namespace std;
int main()
{
const int ten=10;
int *p;
p=(int *)&ten;
(*p)++;
cout<<ten<<endl; //ten is 10
cout<<&ten<<endl; //&ten is 0x22ff74
cout<<p<<endl; //p is 0x22ff74
cout<<*p<<endl; //*p is 11
cout<<*(&ten)<<endl; //*(&ten) is 10
cout<<*(int *)(&ten)<<endl; //*(int *)(&ten) is 11
cout<<*(const int*)p<<endl; //*(const int*)p is 11
return 0;
}
想不明白为什么同一个地址,用两种不同的类型输出,会得到不同的结果??
(也并非完全如此,&ten转int *是11,p转const int*却不发生变化)
请高手解释一下吧!
相关推荐
类的static,const,static const,const static成员的初始化
static,const,static const,const static是c++中几个常见的很容易弄混淆的几个概念,在这里总结了一下,与大家分享!
C++函数后加const的意义 pdf
C++函数后加Const关键字的意义。C++类中经常会看到某函数后面加Const关键字,该文档说明了这些Const关键的意义和用法。
static和const用法详解
C语言中比较经典的static和const的用法
const用法 const int *a; int * const a;
const char* pCh; // 指向字符串常量的指针; 表示pch是一个指针,指向字符串常量。根据需要还可以指向另一个字符串。 但字符串不能被改变。 char* const pCh; // 指向字符串的常量指针; 表示pch是一个字符串常指针,该指针只能指向该字符串,不可以在让他指向另一字符串。但该字符串的内容可以变化。 const int a; //a是个整型常量 int const a; //同上 const int *a; //a是一个指向整型常量的指针(整型常量不可修改,但指针a可以) int * const a; //a是一个指向整型数的常量指针(整型常量可修改,但指针a不可以) int const *a const; //a是一个指向整型常量的常量指针(两者都不可以修改)
面试官竟然问我JavaScript中var、let和const有什么区别这样简单的问题?
这几天逛CSDN论坛,发现在一些前端模块发的问题大都是因为var、let和const搞不清楚导致的,今天我来浅析下,希望对看到这篇博客的童鞋有所帮助~ What we know is that…(英语作文万能开头) :在JavaScript中有三种声明变量的方式:var、let、const。 目录1.var2. let3. const 1.var (1)var定义的变量在之后可以修改,如果不初始化会输出undefined,不会报错。 var a; console.log(a); // undefined // ----------------------------- console.l


