高手,char str為什麼會預設為const char str

時間 2021-09-03 07:06:17

1樓:

c並沒有把char *str預設為是const char *str,比如:

#include "stdio.h"

int main(void)

輸出是string,說明*str='s';是合法的,也說明str並非const性質。你說的情況可能是指

char *str="12345abc";這種情況。在這種情況下,其中的"12345abc"不可改寫是自身性質決定的,因為char *str="12345abc";中的"12345abc"是定義了乙個不可重寫的「常字串」,這與str無關,str仍然可以重新指向乙個非const字元變數。

2樓:匿名使用者

有一篇文章是關於說c語言的變數存放的區域,好像是分為5個區,棧區--由編譯器自動分配,程式設計師不可以更改堆區--由程式設計師自己分配並釋放

常量區--所有用到的常都放在這裡

全域性區(靜態區)--用static關鍵字的變數和全域性變數放在這裡程式**區--2進製**存放區

以上棧區和常量區的資料是不可以更改的。

char *str = "aaaa";

str是乙個指標,存放在棧區,字串aaaa存放在常量區,lz去搜尋有關堆與棧的文章,就會明白其中原因了。

char **str和char *str[]有什麼區別?

3樓:匿名使用者

**str右邊的*表示

來指向每乙個字串第一自個字元的bai位址,du左邊的*表示指向第乙個字串的zhi位址。

const char **str 或 char const **str可以定義dao,const不區分前後順序,意義都是表示str是常量(不能賦值)。

只能定義char *str[5]而不能定義char *str,因為編譯時程式不能確定str陣列有幾維。

char *str[5]表示字串陣列,陣列數量是5,既是5個string又是乙個string array,每個string不限字元個數。

4樓:千鋒教育

兩者都代復表乙個字元陣列儲存制

空間的首位址,bai區別在於du

char *str;

這個變數可以進zhi行指標運算,比如:daostr++;

str--;

但如果定義成:

char str;

則str++這樣的語句是錯誤的,這個首位址不得進行賦值計算。

在不改變str指標指向位址的情況下,下面的語句是一樣的結果。

printf("%s",str+2);

c語言中char str括號裡為什麼是

這表示的是字元陣列,128是字元陣列長 不是字串長 char str 456 也是可以的。其中每個成員的值在 128 127之間,str 0 str 455 每個值不能超過127.如果超過,則擷取低位位元組存貯。題目裡是統計輸入字串中小寫英文字母個數,開頭用的就是這個。這個就好理解了。ascii 就...

《全職高手》為什麼能火起來,為什麼全職高手會火起來

任性少女 你如果說的是 的話,那是因為作者在刻畫人物時很細膩,很鮮活,就感覺是真實存在的。這群人就在你身邊,展現了年輕人的熱血,也讓我們想去了解電競這個職業。只要有夢想就要努力,即使別人說不務正業又怎樣,只有自己知道什麼是自己想要的。裡面每一個人物都有血有肉,非常飽滿,裡面人物雖讓很多,但是都能夠讓...

為什麼預設字型要用宋體呢,為什麼word預設字型要用宋體呢?

卷卷霸氣 宋體 是一種漢字印刷字型的風格類別。筆畫有粗細變化,而且一般是橫細豎粗,末端有裝飾部分 即 字腳 或 襯線 點 撇 捺 鉤等筆畫有尖端,屬於白體,常用於書籍 雜誌 報紙印刷的正文排版。微軟最早推出中文windows的時候,考慮到中文環境下的使用習慣,簡體中文版使用的標準字型是 中易宋體 s...