當前位置:首頁 » 編程語言 » c語言數組為什麼是定長
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組為什麼是定長

發布時間: 2022-11-17 14:32:10

1. c語言中不定長數組是指的變長數組嗎

變長數組在C++中指的是集合(也叫容器)
如vector就是

C語言中,所有的數組都不定長,沒有下標越界的概念,數組實質就是一個指針(由數組名充當),因此C語言中數組的長度沒有任何意義
平常在C語言中講的不定長數組,其實就是指針。比如char *p;這句就定義了一個不定長的字元數組p(長度任意)

2. C語言數組大小是固定的為什麼

數據大小的確是固定的,原因很簡單,因為系統要為數組分配儲存空間(只會為數組分配一次),如果不是固定的,就會出現空間容量的懸浮,造成不能存儲數據的後果

3. c語言中數組元素的個數可以不固定嗎

1.一維數組的定義方式為: 類型說明符 數組名 [常量表達式];

例如 int a[10];

常量表達式中可以包括常量和符號常量,不能包含變數。也就是說,c不允許對數組的大小作動態定義,
即數組的大小不依賴於程序運行過程中變數的值。

2.不過可以用宏定義來解決問題的:

#define M 20

然後在程序中定義數組a[M]
這樣就可以通過改變M的數值來解決問題。

4. 為什麼說c語言中的符號常量也能定義數組長度,不理解哎。。請教謝謝

不是沒限制,而是限制很長,已經超過我們能使用的可承受限制。(如有的規定31個字元,有的63個字元)
而且編譯器不報告錯誤,而是忽略超出長度限制的部分

5. c語言數組長度是定值么

在數組一章中,曾介紹過數組的長度是預先定義好的, 在整個程序中固定不變。C語言中不允許動態數組類型。例如: int n;scanf("%d",&n);int a[n]; 用變數表示長度,想對數組的大小作動態說明, 這是錯誤的。但是在實際的編程中,往往會發生這種情況, 即所需的內存空間取決於實際輸入的數據,而無法預先確定。對於這種問題, 用數組的辦法很難解決。為了解決上述問題,C語言提供了一些內存管理函數,這些內存管理函數可以按需要動態地分配內存空間, 也可把不再使用的空間回收待用,為有效地利用內存資源提供了手段。 其它文獻中所提到的"動態數組",指的就是利用內存的申請和釋放函數,在程序的運行過程中,根據實際需要指定數組的大小.其本質是一個指向數組的指針變數.常用的內存管理函數有以下三個:

1.分配內存空間函數malloc
2.分配內存空間函數 calloc
3.釋放內存空間函數free

6. c語言中一維數組為什麼一定要對長度定義,不能自動補0而二維數組就可以沒有行數長度,自動補0呢

首先要明確數組的在計算機的分配方式。

計算機會分配一塊《連續》的內存給數組來使用,這樣就可以通過《下標》很方便的訪問數組的元素。因此數組的長度就一定是要固定的,因為內存是一直在動態的分配和釋放的,如果數組的長度不固定,那麼數組後面的內存到底還要不要分配給別人。如果分配了,數組忽然要增加,那數組內存就不能是連續的了。

所有定義數組時可以省略的欄位都是因為可以確定長度,才可以省略。不是說一維數組不能省略長度,當對數組中所有元素都初始化的時候是可以省略的。

比如int a[] = {1,2,3,4,5},這么一定可以省略長度,因為數組長度固定是5了。

而二維數組,當不初始化數組中的任何一個元素時,行列都需要制定,這樣才能確定數組的大小。當初始化了其中的元素時,約定製定列數,就可以通過初始化的元素個數,算出最小的行數。

但是行列都不制定就不可以了,比如我初始化了6個元素,即可以是a[2][3]也可以是a[3][2]也可以是a[1][6],會發生歧義,是不允許的。所以二維數組的初始化必須制定一個,至於只必須制定行還是必須制定列,再C語言定義的時候大家預定俗成了制定列,所以就延續下來了。

7. C語言定義數組一定要指定大小嗎

是的,c中數組定義時要指定大小。

當然,萬事也不是絕對的。例如:1.作為形參的時候,可以不指定,因為在函數調用的時候,數組會轉為指針的。2.當為字元串數組時,char ST[]="hello word"這兒定義了一個ST字元數值,不需要你自己去指定大小,系統會自動生成長度為11.

8. C語言定義數組時必須要標明容量嗎想要容量可變怎麼辦

因為編譯器要為數組分配存儲空間,所以一定要標明數組大小;
因為在程序內不能實現容量可變,所以定義數組時一般要預留夠空間(C語言這方面也比較寬容,數組元素溢出一般不會報錯);
想要容量可變要用別的數據結構~建議你學學鏈表等其他數據結構~
希望能夠對你有幫助~

9. 為什麼數組的長度一定要是常量

計算機要求在給數組分配空間的時候知道你要分配多大,
你說的是靜態數組,因為這些數組在編譯的時候就已經得讓計算機知道了,所以必須是常數。

另外一種是動態數組
在c++ 裡面可以
int n=10;
int *arr = new int[n];
這樣可以在執行的時候才告訴計算機你要的數組長度(動態數組)
依然沒有改變上面說的那個原則,你必須在申請數組的時候明確告訴系統你要的數組的長度

10. 求教,C語言變長數組。

C語言沒有變長數組,只有定長數組,所以數組長度不能用常量指定