C語言中字元陣列和字元指標

2022-02-20 22:38:28 字數 652 閱讀 2098

1樓:匿名使用者

又問了一遍哈,我就知道這麼多了

前者是靜態的,也就是每次都要設定一個最大的max上限才能保證不會越界。

後者是動態的,你可以用多少就申請多少,可以在任何時候擴大或減小(free),當資料很大時,就需要把不用的空間free,而直接開陣列不可以

另外如果在main內,陣列不能開很大,但是卻可以malloc一個很大的空間。

2樓:小海鬼

char c[10] 這裡是在編譯的時候就為你分配好了安全合法的記憶體區域。一共10個位元組。它在存在於記憶體的棧。

也就是說它的生命週期是隨著函式的結束而結束(除非你把它宣告成一個全域性的)。當它在main()中宣告,那麼main()完了就釋放。如果它存在於子函式,那麼子函式完了就被自動釋放這十個位元組的空間。

第二種是動態分配記憶體。

也就是說程式在執行的時候才分配記憶體。同樣也是合法安全的區域。也一樣是10個位元組。

這個區域存在於記憶體的堆部分。堆上的空間系統能是不會自動釋放的,要你手動釋放,所以一個malloc要對應一個free 不然會造成空間的嚴重浪費。

3樓:匿名使用者

前者的記憶體在棧上分配~~後者在堆上分配~

前者不用管~~但是後者~用完後要記得用free()釋放記憶體

c符陣列和字元指標,C 字元陣列和字元指標

你這個問題問得很好,我們知道實際上一個字串在進行賦值的時候,例如 char p hello world 這樣賦值是允許的。那麼這並不代表 hello world 這個就是一個指標,實際上我們的這一動作,編譯器在幕後為我們做了很多事,首先在常量區分配一個字元陣列,然後將 hello world 這個字...

C語言字元陣列程式設計題,c語言字元陣列和字串程式設計題 求解

思路 按題意,用指標遍歷字串st,使用標識變數flag首次遇到字母置1並計數,遇到空格時flag重置0。注意 本程式不考慮夾雜非字母的情況,請規範輸入。比如 i am a stu dent stu dent將作為一個單詞識別。下面是 include int getwordnum char st ch...

關於c語言字元型,C語言中關於字元型變數。

關於printf c a i 如果把他換成printf s a i 為什麼不能編譯?回答 編譯應該沒問題,只是執行時必定錯誤.字串指一串連續的字元型的儲存域.c語言的字串在操作時一般以0值字元標誌字串的尾字元 佔一個字元的儲存域,但不計入字串長度 c 應該對應於字元型變數 當然字串中的一個字元也可以...