当前位置: 首页 > news >正文

网站开发西安做网络营销推广的公司

网站开发西安,做网络营销推广的公司,一级消防工程师考试地点,网站建设创新一、问题描述 当一个变量声明为const时,通常是不可以改变它的值的,程序设计过程中也不应该这么做。 const int num 666;//我们不应该对num的值进行修改 // num 777; 此语句是错误的 当然,如果我们写以下语句,程序编译也会出现…

一、问题描述

        当一个变量声明为const时,通常是不可以改变它的值的,程序设计过程中也不应该这么做。

const int num = 666;//我们不应该对num的值进行修改
// num = 777;  此语句是错误的

        当然,如果我们写以下语句,程序编译也会出现这样的错误

int *p = #//程序会报错:无法将"const int *"转换为"int *"

        但如果我们强制转换,就会发现程序编译通过了:

int *p = (int *)#//程序编译通过

        这种程序执行之后,通过指针p访问num直接访问num的值是怎样的呢?让我们一探究竟。

二、执行结果

        程序代码如下:(注意:C语言和C++的执行结果是不同的)

int main() {const int num = 666;int *p = (int *)num;*p = 777;printf("num : %d, *p : %d", num, *p);return 0;
}

2.1 C语言的执行结果

        我们补全C语言的代码,并将其放入一个.c文件中:

#include<stdio.h>int main() {const int num = 666;int *p = (int *)num;*p = 777;printf("num : %d, *p : %d", num, *p);return 0;
}

         我们先看程序的执行结果:

        结果显示,二者的值都被改变了。原因是C语言的const关键字为运行时const,编译期间只是定义,在运行时才会初始化。因此,这就是C语言中的const变量不能作为数组长度的原因。

2.2 C++的执行结果

               我们将以下C++代码放入一个.cpp文件中:

#include <iostream>using namespace std;int main(){const int num = 666;int *p = (int *)&num;*p = 777;cout << "num : " << num << ", *p : " << *p << endl;return 0;
}

        执行结果如下:

        我们可以看到,直接访问num的值并没有改变,而通过指针p间接访问到的值改变了,与C语言执行结果不同。因为C++的const变量为编译时const,是像#define宏定义一样使用的常量。

2.3 补充:那const变量空间的值到底改变了吗

        结论:是的,const变量的值的确被改变了。而且二者访问的是同一段空间

那在C++执行结果中,为什么直接访问间接访问会出现两种不同的结果呢?

我们可以通过以下代码,看到两段空间的地址:

#include <iostream>using namespace std;int main(){const int num = 666;int *p = (int *)&num;*p = 777;cout << "num : " << num << ", *p : " << *p << endl;cout << "num 's address : " << &num << endl;cout << "(*p)'s address : " << p << endl; return 0;
}

        通过以上执行结果我们可以看到,两次的地址都是同一个值,说明他们两个是同一段空间

二者不同的原因:为了C++程序运行的效率更高,编译器会将常量表中的值缓存中。当我们直接访问num时,访问的其实是栈中的缓存值,而此时被改变的值并没有同步过来。而我们通过指针*p间接访问的是那段内存空间,因此就是被改变之后的值

http://www.hkea.cn/news/603809/

相关文章:

  • 物联网平台有哪些排名优化外包公司
  • 秦皇岛汽车网站制作数字营销工具
  • 培训教育的网站怎么做东莞做网站的联系电话
  • 云南做网站的公司外贸谷歌优化
  • 网页设计学徒培训可试学巢湖seo推广
  • 让顾客心动的句子seo模拟点击软件源码
  • 设计类专业包括哪些kj6699的seo综合查询
  • 手机网站制作哪家好查关键词
  • 米拓企业网站管理系统电商培训机构排名前十
  • 做效果图有哪些网站seo点击排名
  • 网络营销推广网站收录seo推广排名平台有哪些
  • 产品经理如何看待网站开发广州软件系统开发seo推广
  • wordpress 忘记管理员如何做网站seo
  • app和网站哪个有优势淘宝关键词排名
  • wordpress该域名宁波网站seo公司
  • 建购物网站怎么建呀简单的网站建设
  • 江苏省建设教育协会网站首页百度知道合伙人答题兼职入口
  • 做优化的网站平台搭建
  • 做网站需要多久网络推广是什么专业
  • 厦门加盟网站建设线上推广营销
  • 定制网站案例seo搜索引擎优化薪酬
  • 网站制作成功后怎么使用浏览器观看b站视频的最佳设置
  • 一家专门做开网店的网站北京seo专员
  • 专业企业网站搭建服务头条权重查询
  • 去哪儿网站上做民宿需要材料免费的黄冈网站有哪些平台
  • 网站建设网现在推广什么app最挣钱
  • 嘉兴装修公司做网站安装百度到桌面
  • 电商网站特点外贸营销网站建站
  • 上海市住房城乡建设管理委员会网站网络营销软文范例大全800
  • 莱芜区政协网站做网络优化的公司排名