C語言字串如何賦值及輸出?

時間 2021-05-06 02:43:39

1樓:那個人

你這不是字串賦值,而是字串指標賦值。

你定義的是乙個字串指標,指向的是字串常量的起始位址。

字串定義: char buf[LEN]=;

賦值:strcpy(buf, "string"); 或sprintf(buf,「%s」,"string");

2樓:

先不用嘟嘟嘟,p="abc"其他不變

首先執行時記憶體裡面會有乙個位置儲存"abc",比如1000是'a',1001是'b',1002是'c',1003是'\0',這4個數數字隨便寫的,知道是連續的4個就行。p="abc"表示p="abc"裡第乙個字元也就是'a'的位置,即p=1000。

printf("%s",p)表示去p的位置找字串,也就是去1000找,一格一格往下輸出'a','b','c'最後碰到'\0'停止。

而*p=='a'==97 ,printf進去97那個位置找字串,(如果沒報錯的話)因為那裡不是我們自己的記憶體,所以不知道會列印出什麼東西,看起來就是亂碼,又因為可能很久才會碰到乙個'\0',會列印很長或者碰到不可讀的位置崩潰。

嘟嘟嘟和這個類似,只是轉換成的數字不一樣

3樓:KevinYao1224

C 字串 | 菜鳥教程

題主先看一下這個教程的前半部分,就會理解字串的儲存方式是乙個字元陣列。而陣列和指標在一般情況下可以通用(但是注意,它們是有一些區別的,具體場景還是要謹慎)。%s要傳入的就是這個陣列名。

4樓:junjie ye

簡而言之語法就是這樣的

"嘟嘟嘟"是字串常量,返回值是乙個字串位址p賦值後就指向這個字串了

%s輸入的引數要是字串指標,*p顯然不是指標

關於c程式,字串為什麼不輸出?

霍工 陣列a沒有定義長度,因此預設是初始的5個位址,後邊的均沒有開闢給a。當增加一節字元後,實際是在開闢的5個位址後,強制將 2334 寫在沒有分配的位址,而這些位址是不能正常使用的,很容易引起位址異常,即使輸出正確,實際也是異常讀取且極易崩潰。如果主函式增加 return 0 就應該看出來是非法終...

c 中的字串常量為什麼可以賦值給char

大只姑娘 字串常量本身的特性就是常量不可變,儲存在記憶體的靜態資料區,可以用指標進行字串操作除了改變字串原本內容 char p hello char p的指標指向乙個字串常量的首位址,cout cout p 想要列印出字串的首位址可以強轉下輸出指標的型別,cout void p 準確來說,不是把 h...

c語言處理字串, 但不想編譯器給每個,字串後面都加「 0」符號,要自己做的話,要用什麼方式呢?

子謙 首先,C語言中,字串並不是自動加上 0 字元的。說明下字元陣列和字串 字元陣列指的是有若干char型的元素組成的陣列,但是由於常用char型的陣列表達一些含義完整的自然語言,因此常把char型陣列看成乙個整體,為了方便對於這樣乙個整體的操作,在字元陣列初始化的時候,如果使用char str h...