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語言沒有變長數組,只有定長數組,所以數組長度不能用常量指定