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 應該對應於字元型變數 當然字串中的一個字元也可以...