【C++ grammar】C++简化内存模型

1、stack(栈)
编译器自动分配内存(函数内部定义得局部变量、形参)
2、堆(Heap)
一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收(new和delete)
3、Global\Static(全局区、静态区)
1、全局变量和静态变量的存储是放在一块儿的
2、可以简单认为:程序启动全局/静态变量就在此处、程序结束释放
4、Constant(常量区)
可以理解为所有常量都放在一起,该区域内容不可修改、
c++内存示例:
堆向高地址方向生长
栈向低地址方向生长
所以中间的空白区域会由两者共享,增大了内存的利用效率。
在这里插入图片描述
观察变量存放位置;
在这里插入图片描述
在这里插入图片描述
问题:
下面哪个语句可以接在const char* p = “Hello”;后面:
1、p[0]=‘A’
2、p = “World”;
3、cin>>p
4、*(p+1)=‘e’

1和4共同的问题:表达式必须是可以修改的左值
运算符的左边应该是一个“左值”。所谓“左值”就是指在程序中占用内存空间、可以被修改的量,比如各种变量。
‘’A‘’是一个字符串常量,他一经定义系统就会分配一段地址给他(常量区)式子左边p[0]也是一个常量地址,所以不能用 = 将一个常量地址赋值给一个常量地址。这也就能回答问题:表达式必须是可修改的左值的答案,因为p[0]也是一个常量地址。
3、符号方向反了

关于1、4问题的详细解释看这篇文章:
C语言中字符串赋值处理方式

char *p,a='5';
p=&a;                     //显然是正确的,
p="abcd";              //但为什么也可以这样赋值??

双引号做了3件事:
1.申请了空间(在常量区),存放了字符串
2. 在字符串尾加上了’/0’
3.返回地址
这里就是 返回的地址 赋值给了 p

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effect of Diethylene Glycol on the Inkjet Printability of Reactive Dye Solution for Cotton Fabrics.

Effect of Diethylene Glycol on the Inkjet Printability of Reactive Dye Solution for Cotton Fabrics 二乙二醇对棉织物活性染料溶液喷墨印刷性能的影响 Diethylene Glycol 二乙二醇 Inkjet Printability 喷墨印刷性能 Reactive Dye Solution 活性染料溶液 Cotton Fabric…

一些常用的工具

可查看网站服务器使用的架构 http://toolbar.netcraft.com/site_report?urlwww.163.com 可在线制作 icon 图标 http://www.damotou.com/index.php 好的UI设计 http://www.uiimg.com/ 转载于:https://www.cnblogs.com/ouuy/p/3183613.html

Silverlight4.0教程之使用CompositeTransform复合变形特效实现倒影

微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面: 开发工具增强:Visual Studio 2010…

julia矩阵运算_Julia中的复数及其运算

julia矩阵运算Julia| 复数 (Julia | Complex Numbers) The syntax to represent the complex number in Julia is: 在Julia中表示复数的语法为: Syntax: 句法: ABimHere, A and B are the values, and im is the global constant which is bound to th…

2019年的wps计算机考试题,2019年3月计算机一级WPS模拟题及答案(2.21)

【导语】2019年3月计算机一级考试备考正在进行中,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2019年3月计算机一级WPS模拟题及答案(2.21),把握机会抓紧练习吧。如想获取更多计算机一级考试模拟题及备考资料&#xff…

Python求解多项式方程

例如:二次函数:f(x) 10x^2 - 14x 22,依次求解x1,2,3,4,5,6时函数表达式所对应的函数值。 import numpy as np #f(x) 10*x^2 - 14x 22 p np.array([10,-14,22])#这里存放的是系…

CSS中的border-radius属性

CSS | 边界半径属性 (CSS | border-radius Property) The border-radius property is commonly used to convert box elements into circles. We can convert box elements into the circle element by setting the border-radius to half of the length of a square element. …

【C++ grammar】Enhancement for Type System (C++11 对类型系统的增强)

数据类型 (Data type) int, long int, double, struct, char *, float [], int (*f)()… 计算机程序构造块 计算机程序构造块是不同大小粒度的计算机程序组成部分,它包括变量、表达式、函数或者模块等。 类型系统 (Type System) 类型系统:在编程语言中…

.net romoting 的EventWrapper类

.net romoting 的EventWrapper类 注意:防火墙的问题 --------------------------------------------------- //定义广播服务接口 [Serializable] public delegate void BroadCastEventHandler(string info); public interface IBroadCastService {…

一、织物组织相关基本概念

一、织物形成的五大运动:开口、引纬、打纬、送经、卷取 开口运动(先开口让织物形成上下两层) 引纬运动(在上下两层经纱之间进行引纬,把纬纱穿入上下两层经纱之间,从而实现经纱纬纱之间的交织) …

达尔豪斯大学计算机科学世界排名,达尔豪斯大学成了全加最好,这又是个什么排名?...

原标题:达尔豪斯大学成了全加最好,这又是个什么排名?没有“八大”的知名,没有“常春藤”的受宠,虽然它只是众多名校中的普通一个,但只要你对它有个稍微的了解,你一定会爱上它的!它虽…

tag标签记录

看到项目代码中有一个自定义的tag标签,想起以前自己写过的标签,竟然忘记的差不多了,手一痒,自己写个简单的tag标签,回顾一下历史知识 首先建一个servlet工程,然后写个index.jsp,项目跑起来&…

java类只读怎么办_如何在Java中制作一个只读类?

java类只读怎么办The question is that "can we make a read-only class in Java?" 问题是“我们可以用Java制作一个只读类吗?” The answer is: "Yes, we can make a read-only in java." 答案是: “是的,我们可以在J…

LeetCode 53:最大子序和解题以及优化思路(第一次独立刷题记录)

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现…

NHibernate 的 ID 标识选择器

在 Hibernate 中,每个对象需要一个标识 ID,通过这个标识 ID 建立对象与数据库中记录的对应关系。 Nhibernate 提供了多种方式来建立这个 POID。基于不同的生成策略,可以选择更佳的方式。 首先是赋值方式:assigned,这种…

三、规则组织的衍生组织——经山形组织数学模型的建立

基础概念公式推到可参考该专栏下的前几篇博文。 经山形组织图: 左半部分:,3上2下1上2下,右斜,飞数为1 右半部分:,3上2下1上2下,左斜,飞数为-1 左右两部分只有飞数是相…

c语言 函数的参数传递示例_scalbln()函数以及C ++中的示例

c语言 函数的参数传递示例C scalbln()函数 (C scalbln() function) scalbln() function is a library function of cmath header. It scales the significand using floating-point base exponent (long int) i.e. it is used to calculate the product of the given signific…

上周热点回顾(7.8-7.14)

热点随笔: MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...(ZYM) 我的新书--《从员工到经理人》(Jimmy Zhang) MVC实用架构设计(三&#xff0…

储存过程生成器

/Files/qanholas/SPGen_ReleaseCandidate1_Binaries.zip ---- Dropping stored procedure sp_费用表_SelectAll : --IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id OBJECT_ID(N[sp_费用表_SelectAll]) AND OBJECTPROPERTY(id, NIsProcedure) 1)DROP PROCEDURE [dbo].[sp…

基于计算机控制的温度检测系统,基于专用温度传感的温度检测系统.doc

基于专用温度传感的温度检测系统摘 要 在现代工业领域温度检测系统是指用某种方式显示出当前的环境温度。传统使用PTC或NTC电阻作为温度传感器的方式在使用过程中存在着很多不足之处比如所采集温度的精度比较低、系统的可靠性差、设计难度较大、整体设计成本较高等缺点已…