C 中如何定義只讀記憶體,C 中如何定義一個只讀記憶體?

2022-02-12 18:35:19 字數 2964 閱讀 5275

1樓:吞併微軟

const mytring a=new char;

a 就是一個只讀記憶體的地址。

2樓:匿名使用者

你定義一個mytring型別的常量(在定義時就初始化,以後便不能改變)不就行了嗎?

3樓:拒絕996的瀟灑程式設計師

songwanqiang正解

4樓:匿名使用者

簡單說,記憶體三種型別,堆、棧和靜態儲存區。

把變數定義到靜態儲存區就可以了。

mytring str = "helloworld!";

這時,"helloworld!"字串處於read-only區域,而不是str。

理解一下下面的例子:

mytring const str = "helloworld!";

*str = 'b'; //這句是執行時錯誤

str = "bar"; //這句是編譯錯誤

這時str也是處於read-only區域。

ps:定義read-only儲存,是看關鍵字const的屬性賦予點了。

舉幾個例子:

typedef char *mystring;

hi你問

mystrig const 和 const mystring的區別,這兩個是等價的。因為現在mystring已經是個型別了,而不是簡單的char *型別。就像const int 和 int const是一樣的一個道理。

注意與下面的定義區分:

char *const 和 const char *,這兩個不是等價的,前者是定義一個常指標,後者是定義一個「自以為」指向常字元的指標。而char const *和 const char *是等價的,因為屬性賦予點都在型別上。

簡單的記,const的屬性賦予點是在其最近的識別符號或型別上,僅僅作用在一個點上面。這句話細想不是很嚴謹,但是一般這樣用沒錯。

注意,一再強調是「型別」。

假如有#define mystring char *這樣的定義,和typedef char *mystring是不同的,#define僅僅是預處理期的簡單替換,不是型別。所以假設定義:

#define mystring char *

這時mystrig const 和 const mystring的是不同的,前者等價與char *const,後者等價於const char *。

c++的只讀記憶體怎麼改

5樓:匿名使用者

char *st="abcdefg";的時候,該字串是存放在全域性常量區,是屬於堆裡的,你沒有許可權進行修改的 char str="abcdefg"則是在main 函式的棧裡開闢的,使用者可以修改,且函式結束,自動釋放 這才是原因,分清楚各種變數是如何儲存的。。

6樓:匿名使用者

#include "iostream"

using namespace std;

int string_length(char *str)void reversestr(char *str)for(int k=0;k<=i;k++)cout<<(*(str+k));

}void main()

c++中,引用&變數是不分配記憶體空間嗎?那麼定義一個引用變數,如int& a

7樓:搗蒜大師

對啊 就是你說的那樣。現在引用就是個指標,非說一點不佔記憶體那是不可能的。

8樓:匿名使用者

引用只是編譯過程的一個概念

由編譯器決定

產生的機器碼中,有些需要佔記憶體,有些則不需要在不同情形下,各有不同

9樓:鬱草小沙彌

沒有分配。我覺得你產生誤解的原因是你誤解了宣告一個引用變數的方式。int& a;這種寫法是不對的,屬於語法錯誤,宣告一個引用變數是要給它初始值的,這就是引用變數特殊的地方:

int i; int& a = i; 這樣才對,也就是說,必須現有一個普通變數i,才能宣告一個引用變數a來指向i,a本身只相當於一個標識,與變數名i沒區別。你可以理解為一個變數有了兩個名字。

10樓:

指標資訊是佔用記憶體的,這部分記憶體是系統自動分配的,不需要你來操心它被放在**。通常我們說分配記憶體空間,是給你的變數內容使用的。你的變數可能是一串字元,一段文字,一個數值。

這些是真正需要你分配空間的地方。

就像賓館一樣,來了客人,開了房,就等於分配空間了。當然登記簿上是記了一筆,但是這個登記簿是由賓館來管理的。按照什麼格式,記了什麼東西是賓館管理方自己規定的。

你住進房間了,人家給你登記為某先生。一開始別人來找你都問某先上在嗎?後來住長了服務員都知道你是某公司某總。

那麼從他們從客人備註裡就寫上了這個資訊。今後一提某公司某總,就知道是你了。這就是引用。

並沒給你新開房,就是給你加一別名,往本子裡記一筆而已。房間並沒有變動。

怎麼 在c++ 中定義儲存中文字串的變數

11樓:home魅影傳說

漢字根據編碼方式不同,所佔的大小2~4個位元組不等,漢字賦值給字元變數,只顯示第一個位元組,出問號就不奇怪了

用漢字賦值給字元數陣列然後在顯示的話,一定要考慮編碼方式問題,你的終端支援哪種就選擇哪種,否則亂碼

c++中如何定義一個動態儲存的全域性變數 5

12樓:匿名使用者

在標頭檔案中,

extern int stu_num;

在.cpp檔案的頭部

#include "標頭檔案"

int stu_num;

13樓:你是大母雞

在函式外面輸入類似

int stu_num[7]=就ok

14樓:匿名使用者

#define stu_num 80;

C 中類怎樣定義,使用,C 中如果要用的類定義在使用之後,該怎樣宣告?

類的定義格式一般地分為說明部分和實現部分。說明部分是用來說明該類中的成員,包含資料成員的說明和成員函式的說明。成員函式是用來對資料成員進行操作的,又稱為 方法 實現部分是用來對成員函式的定義。概括說來,說明部分將告訴使用者 幹什麼 而實現部分是告訴使用者 怎麼幹 類的一般定義格式如下 class 類...

C中存在define的巨集定義嗎,C 中怎麼寫類似c語言的 define?

1全部 程式設計師參考 define請參見 c 前處理器指令 條件方法教程 define 使您得以定義符號,這樣,通過將該符號用作傳遞到 if 指令的表示式,該表示式將計算為 true。define symbol 其中 symbol 要定義的符號名稱。備註符號可用於指定編譯的條件。可以用 if 或 ...

如何用c從一組數中隨機抽取數字,C 中如何從陣列中獲取一個隨機數

int array 按照樓主所說的3個數dictionaryextract new dictionary 記錄每個數抽 取的次數 for int i 0 i array.length i random ran new random listlist new list 裝載抽取出來的數for int ...