亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言中數組長度不能用變量定義嗎?

C語言中數組長度不能用變量定義嗎?

C
胡說叔叔 2019-05-31 17:02:51
C語言中數組長度不能用變量定義嗎?
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超5個贊

定義數組的時候,數組的大小必須確定,并且是整型。
在C99中提出了變長數組,即為VAL,意思是你可以用一個變量去代替數組的大小。
例如 int val = 5;
int a[val];
變長數組中的變,也只是說你可以用變量去定義數組,但是變長數組的大小在創建后就是不變得,
而且變長數組必須的自動的存儲類。
由于變長數組的限制太多了,很少人去使用他。
所以對你這個問題,需要使用動態內存,即用malloc calloc 這類的函數。


 



查看完整回答
反對 回復 2019-06-01
?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊


只是定義數組的話是不行的,你可以把數組定義成指針,用c語言中的 malloc來分配空間,因為這是你手動分配的,在不用之后要手動釋放。
你可以如下申請
int **u = (int **)malloc(sizeof(int *) * m);
for(int i=0; i<n; i++)
{
u[i] = (int *)malloc(sizeof(int));
}
這樣u這個指針就相當于一個可變的2維數組u[m][n]了
釋放時用free





查看完整回答
反對 回復 2019-06-01
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊


1、C語言中不支持。
C++中支持變長數組(你可以自行度娘變長數組和alloca函數),但是因為其實在棧上分配,不被推薦使用。做為解決方案,你可以使用C式的malloc函數或者C++式的new函數來在堆上動態分配內存,這樣長度是完全可以自定的。

2、C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。

3、、在數組一章中,曾介紹過數組的長度是預先定義好的, 在整個程序中固定不變。C語言中不允許動態數組類型。例如: int n;scanf("%d",&n);int a[n]; 用變量表示長度,想對數組的大小作動態說明, 這是錯誤的。但是在實際的編程中,往往會發生這種情況, 即所需的內存空間取決于實際輸入的數據,而無法預先確定。對于這種問題, 用數組的辦法很難解決。

4、為了解決上述問題,C語言提供了一些內存管理函數,這些內存管理函數可以按需要動態地分配內存空間, 也可把不再使用的空間回收待用,為有效地利用內存資源提供了手段。 其它文獻中所提到的"動態數組",指的就是利用內存的申請和釋放函數,在程序的運行過程中,根據實際需要指定數組的大小.其本質是一個指向數組的指針變量.常用的內存管理函數有以下三個:分配內存空間函數malloc;分配內存空間函數 calloc;釋放內存空間函數free。



查看完整回答
反對 回復 2019-06-01
  • 3 回答
  • 0 關注
  • 2543 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號