【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.pswp.cn/news/378148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378148.shtml
英文地址,請注明出處:http://en.pswp.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電阻作為溫度傳感器的方式在使用過程中存在著很多不足之處比如所采集溫度的精度比較低、系統的可靠性差、設計難度較大、整體設計成本較高等缺點已…