hello 是const的指標嗎?

時間 2025-03-11 19:05:15

1樓:網友

如果你比較明白pe格式的話,這個問題就比較好理解了,一般情況下字串都是儲存在rdata段,這個段在pe裝載後的記憶體格式為mem_readonly,也就是不可寫的,他比const指標更強,const指標是可以在程式設計中強制轉換成非const的,而且只要你使用恰當,不會造成什麼問題,但是如果你試圖改寫mem_readonly的記憶體資料,那麼程式會丟擲乙個記憶體不可寫的異常並且導致程式崩潰,除非你事先修改了該記憶體塊的保護屬性。

看下面的**。

char* szconststr = hello";

strcpy(szconststr,"world!")這段**是會造成程式崩潰的,雖然編譯能通過。

所以說"hello"是const的指標,並不一定正確,因為這乙個是執行時的概念(常量字串),乙個是編譯時概念(const).

2樓:網友

這個字串常量在c/c++中可以理解成乙個位址值,但是你沒有把他賦給某個指標的話,就不能算做指標。如果賦給某個指標,那此指標就是const char* ,即指向常量的指標,至於是不是const指標,那要看這個被賦值的指標變數是否被定義成const指標。還有這個字面值常量是不能修改的,就是這個位址裡面的內容無法改變。

const char* /char const*是一樣的意思,都是指向const物件的指標,但不是const指標,因為這個指標可以指向別的物件。

但是const char* const不同,這是指向const物件的指標,是const指標,因為這個指標不能指向別的物件。

好了,打字累了,給分吧。

3樓:網友

hello"是字串常量字串常量在c,c++中被解釋為位址,即指標。

等價於 const char * const,指標指向的位址和位址中的內容都不可以更改。

4樓:網友

hello"是 字串常量, 只不過指向這個常量的東西是 const指標,不能說 "hello"是const的指標。

c語言 什麼是const指標

5樓:物理公司的

const指標的準確提法應該是指向const資料的指標,即它所指向的資料不能被修改。只要在指標說明的開頭加入const修飾符,就可說明乙個cosnt指標。儘管const指標所指向的資料不能被修改,但cosnt指標本身是可以修改的。

下面給出了const指標的一些合法和非法的用法例子:

const char *str="hello";

char c=*str; /*legal*/str++;/*legal*/*str='a'; /* illegal */str[1]='b'; /*illegal*/

指標字串在前面加const有什麼用意??

6樓:擁雲莊主

const char * ch

const在*前面表示這是乙個字串常量指標,它所指向的字串不能被修改,但是這個指標的指向可以改變,它和char const *ch是一樣的,比如:

const char *ch="123";//指向常量字串123,123的內容不能被修改,但可以改變ch的指向。

ch="hello world!";//可以改變ch的指向。

如果const在*的後面,則表示這是乙個指標常量,它的指向不能被修改,但可以修改批所指向的內容,比如:

char c = "123";

char * const ch=c;//ch的指向不能被修改,但它所指向的內容視情況可以被修改,/比如由於c是個字元陣列,所以,可以通過ch修改c陣列的值。

ch[0]='4';//修改c[0]為4,c變成"423"

7樓:網友

表示指標指向的物件無法修改。

例如:char c;

char s;

const char* ch = &c; //初始化,正確ch = &s; //改變指向,錯誤。

在宣告乙個指標時,如果在*的右邊加const修飾符,所宣告的指標稱為?

8樓:金色潛鳥

指標常量, 指標本身是常量,指向的位址不可以變化, 但是指向的位址所對應的內容可以變化。

例如:char s1[20]="hello";

char s2[20]="hello word";

char *const p=s1;

printf("%s",p); // 列印出 hellos1[2]='a';

printf("%s",p); // 列印出 healop=s2; -錯誤。因為 char *const p 規定了 p 是 指標常量, 常量 不 可以 做 「左值」,不 可以 放在 賦值號 的 左 邊。

c語言中char* p = "hello";和char p[] = "hello";的p有什麼區別,都是常量指標嗎?希望解釋得詳細些

9樓:

這兩個表示式的p都是儲存字元h的位址的指標。它們的區別是:*p中的p是普通指標,可以進行++、操作,但它指向的hello是常字串,不能修改(就是不能寫操作),所以像*(p+1)='x';這樣的語句是非法的;但這個p可以指向別處,如有char *s="123";,則p=s;合法。

而p中的p是常指標,不能++、操作,也不能指向別處,但它指向的字串hello不是常字串,可以修改,如*(p+1)='x';則是合法的,執行後原字串就成了hxllo了。

10樓:匿名使用者

乙個是指標變數 乙個是陣列名。

類似乙個陣列乙個變數的區別。

int i;

int i[10];

關於const char* a的問題,這句話定義的是乙個字元常量指標還是字串常量指標啊?

11樓:從靈開始

關鍵字const並不能把變數變成常量!在乙個符號前加上const限定符只是表示這個符號不能被賦值,也就是它的值對於這個符號來說是隻讀的,但它並不能防止通過程式的內部(甚至外部)的方法來修改這個值,const最有用指出就是它來限定函式的形參,這樣該函式將不會修改實參指標所指的資料,但其他的函式卻可能會修改它。這也許就是c和c++中const最一般的用法。

const和*的組合通常只用於在陣列形式的引數中模擬傳值呼叫。它聲稱:「我給你乙個指向它的指標,但你不能修改它」,這個約定類似於極為常見的void *的用法,儘管在理論上它可以用於任何情形,但通常被限制於把指標從一種型別轉換為另一種型別。

const關鍵字原先如果命名為readonly就好多了。。。

12樓:網友

char *一般都是字串,比如char* p=「hello」

這是定義了乙個字串常量指標。

13樓:網友

是字元常量指標。

字串都是const char *型別。

const char *p = "hellow";

cons char a = '7';

const char *p2 = &a;

14樓:網友

這是個字元常量指標 , c語言沒有字串,自然也就沒有所謂的字串常量指標。

15樓:網友

字串指標。指標是位址,前面指標指向第乙個字元位址而已。

16樓:最愛

char 表示的是字元型別的,而不是理解為字元。

c語言指標字串char*const p一些問題

17樓:網友

是定義字串的,應該沒有問題。但是因為是 char * const p 所以p是指標且是常指標,指標的值不能變!

例如下面的**應該可以執行。

#include

int main()

18樓:匿名使用者

不太明白你想問什麼,不是沒有任何問題麼。

19樓:網友

我執行的可以啊,你對比一下,再檢查一下。

c++關於 引數裡面用const和&的問題。

20樓:97樂於助人

返回const,則呼叫時也必須宣告為const,防止返回的指標內容被修改。

21樓:旅春冬

這個常引用的作用是不能改變x,不是不能改變引用指向。

22樓:我已經匿名了

引用變數只能初始化一次,即繫結被引用的物件(變數);而const是常量限制,是指不允許修改變數的值,兩碼事。

本例中,&使得x作為實參的引用變數(不會進行拷貝初始化,從而省時省記憶體);const限制x的值不能在本函式中被修改。在函式體內任何企圖修改x值的行為都會被編譯器檢查到並報錯。你去掉const,就可在函式體內可以修改x的值(比如 x=x+ "hello";)。

指標常量 指向常量的指標各是怎麼定義的?

23樓:網友

指標常量: const int *p; (用常量修飾符進行修飾的指標變數)

指向常量的指標:char *p="hello,world";這裡的"hello,world"是字串常量,而指向它的指標就是是指向常量的指標。

24樓:網友

指向常量的指標實質還是指標變數,可以在職想別的量。。。而指標常量是不能改變指向的指標,陣列名a【】就是指標常量。

25樓:網友

指標常量是int *a;指向常量的指標是:(int)* a。

26樓:樂酷科技

指標常量:const int *p;

指向常量指標:int a,*p;p=&a;

C 中的const的用法,c 中const是怎麼使用的?

傅夏生 個人的一些筆記,希望可以幫助你 const 的使用 const經常用來修飾一個值不能改變的量,安全,並且能消除儲存操作 const的幾種用法 1 說明值常量 2 說明指標 3 說明函式引數及其返回值 4 說明類的常量和成員函式 const 說明值常量 值常量的說明一般放在標頭檔案或者檔案的開...

const的位置是怎樣的啊?是放在型別名前還是後呢

public const int i 5 const 是常量修飾符 1 在定義變數的時候是沒有說明區別的 例如 const int a int const a 但是定義此類變數時,一般放在前面!2 在定義改型別的指標時,就有三種定義方式,並且意義是不一樣的 a.指向const物件的指標 例如 con...

delete指標的指標,delete掉的是什麼

du瓶邪 簡單的測試 c c code 此處t是不完整型別 編譯會出錯 typedef char t typedef char type must be complete sizeof t 1 1 void sizeof type must be complete 此處t是完整型別 編譯不會出錯 t...