當前位置:首頁 » 編程語言 » c語言定義數組長度

c語言定義數組長度

發布時間: 2022-03-31 02:08:06

c語言中如何自定義數組長度

動態分配的數組可以自定義數組的長度,示例如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intmain()
{
printf("輸入要分配的內存大小:");
intsize;
scanf("%d",&size);//輸入自定義的數組長度
int*pstart=(int*)malloc(sizeof(int)*size);
if(pstart==0){
printf("不能分配內存 ");
return0;
}
memset(pstart,0x00,sizeof(int)*size);
intinx;
for(inx=0;inx!=size;++inx)pstart[inx]=inx;
for(inx=0;inx!=size;++inx)printf("%d ",pstart[inx]);
printf(" ");
return0;
}

② C語言怎樣用scanf定義數組長度,再定義數組各元素

可以使用內存分配函數來實現。

#include <stdio.h>
#include <stdlib.h>

int main()
{
int n, *a, i;
printf("輸入數組長度:");
scanf("%d", &n);
a = malloc(sizeof(int) * n); /*分配內存*/
printf("輸入%d個數:\n", n);
for(i = 0; i < n; i++)
scanf("%d", a + i);
printf("輸入的數是:\n");
for(i = 0; i < n; i++)
printf("%d ", a[i]);
return 0;
}

③ c語言 自定義數組長度

說明數組之前先說明變數。
所有的變數在使用之前都必須先定義。為什麼呢?因為變數都是存放內存當中(當然一些存放在代碼段如單片機使用關鍵字code的變數另算),一般每個內存單元的大小是一個位元組,如果你在使用一個變數時沒有事先定義它的類型,也就是說,編譯器根本不知道該變數所佔的內存空間的大小,變數能存放的數據范圍也未知,這勢必會造成紊亂,兩個變數所規劃的內存地盤不明確,CPU在訪問時有沒有越界都不知道,這樣編譯器當然不會幫你干這種壞事啦。所以,一個變數在使用之前必須先定義(存儲方式、數據類型)。
好,再來說說數組。
數組是什麼概念,有木有深刻的理解過?好,我現在說說一維數組(其實多維數組也是一樣的)。
數組是一組具有相同類型並且有一定的相互關系的變數的集合。注意,每個數組元素都是一個變數。那這些有相互關系而且數據類型一樣的變數是怎麼存放在內存當中的呢?其實,他們是連續存放的,也就是說他們中間沒有間隔不相關的內存單元。而且編譯器也要事先知道你這個數組的長度是多少,才能分給你家多少內存。(就好像某某政府要分田地給老百姓,先數一下確定你家到底多少人口,才能分多少地給你家,不然不是浪費就是種田的時候種到別人家的田地去了,呵呵,是吧?這個編譯器是絕對不允許的)。
所以說,一個數組在定義時必須要事先規定好這個數組的長度,這樣編譯器才知道怎麼樣分配內存空間給這個數組。這里注意一點,數組的長度必須是一個常量,變數是不行的,變數的值可以改變,編譯器已經分配了多少空間給這個數組,怎麼能說變就變呢?因為編譯器是編譯器,程序是程序,這個跟定義一個變數是一樣的。
使用malloc函數,一般結合鏈表來用,鏈表存放的數據就不一定是連續的了。
等某一天你變成中國的計算機牛B人物了,可以想個辦法做個超吊的編譯器實現數組長度想怎麼變就怎麼變,哥也期待那一天,弟,你行的。
所以說,你想的太天真啦。哈哈。

④ C語言怎麼自定義數組長度。

動態分配的數組可以自定義數組的長度,示例如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
printf("輸入要分配的內存大小:");
int size;
scanf("%d", &size); //輸入自定義的數組長度
int *pstart = (int *)malloc(sizeof(int) *size);
if (pstart==0) {
printf("不能分配內存\n");
return 0;
}
memset(pstart, 0x00, sizeof(int) * size);
int inx;
for (inx=0; inx!=size; ++inx) pstart[inx] = inx;
for (inx=0; inx!=size; ++inx) printf("%d\t", pstart[inx]);
printf("\n");
return 0;
}

⑤ c語言怎麼由用戶定義數組長度

一般不是這樣定義的,我一般都是,先定義好數組長度,如int
a[100],就是先把數組定義的比較大就可以了,然後再int
n;scanf("d%",&n);int
a[n];

⑥ C語言數組定義時可以不開辟長度嗎

沒有在方括弧中指定數組長度時,必須有初值表,否則將導致語法錯誤,如:
int a[] = {1, 2, 3};
則a的長度為3。

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

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。

⑧ C語言定義數組長度問題

可以是可以,但可能會引起內存不夠,溢出問題,所以個人建議在函數前定義數組

⑨ C語言中怎麼定義動態的數組長度

動態數組長度,對於部分新的編譯器,支持C99的,可以直接用變數定義數組

比如

func(intn)
{
inta[n];
....
}

不過 有些編譯器不支持 會報錯

就只能使用動態數組,也就是malloc

func(intn)
{
int*a;
a=(int*)malloc(sizeof(int)*n);
....
free(a);
}

⑩ C語言中如何定義數組

數組定義的三種方式

1、第一種

int []a = newint[5];

a[0] = 10;

2、第二種

int []c = newint[]{1,2,3};

3、第三種

int []i ={1,2,3,4};

4、錯誤的寫法

int []i1 = [1,2,3,4];

System.out.println(Arrays.toString(c));

5、總之,具體的元素不能被【】包裹。【】包裹的應該是數組的數量。

(10)c語言定義數組長度擴展閱讀

數組的注意事項:

1、 數組中每個元素的數據類型必須相同,對於inta[4];,每個元素都必須為 int。

2、 數組長度 length最好是整數或者常量表達式,

3、 訪問數組元素時,下標的取值范圍為 0 ≤ index < length,

參考資料

網路-數組



熱點內容
戰神解壓密碼 發布:2025-07-23 22:29:07 瀏覽:224
如何刷機安卓系統手機 發布:2025-07-23 22:28:56 瀏覽:739
麥咭編程下載 發布:2025-07-23 22:20:04 瀏覽:36
javadraw 發布:2025-07-23 22:19:59 瀏覽:629
忘記密碼去哪裡找回 發布:2025-07-23 22:19:06 瀏覽:748
php培訓技術 發布:2025-07-23 22:18:21 瀏覽:607
兒童速演算法 發布:2025-07-23 22:09:37 瀏覽:637
資料庫無法寫入 發布:2025-07-23 22:03:34 瀏覽:535
android瀏覽相冊 發布:2025-07-23 21:49:15 瀏覽:515
兒童編程課程是什麼 發布:2025-07-23 21:48:13 瀏覽:295