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

c語言改變數組長度

發布時間: 2022-02-04 21:24:46

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

C99標准支持不定長數組(代價是不能用goto語句)。在輸入語句後聲明就可以了。
不過現在的編譯器對C99的支持都不好```
對於ANSI C(C89)一般的編譯器都支持。不過數組長度必須是編譯期確定的常量,運行時不能改變。所以採用動態分配實現。
例如
#include<stdio.h>
#include<stdlib.h>/*這個頭文件在用malloc和free等分配內存函數時必須被包含*/
int main()
{
int n,*a=NULL;
printf("Please input the num of elements:\n");
scanf("%d",&n);
if(!(a=(int *)malloc(n*sizeof(int)))
{
printf("Memory is not accessed!\n");
exit(1);/*內存分配失敗時異常退出。也需要stdlib.h*/
}
/*如下使用方法實質是相同的*/
scanf("%d",a[0]);
scanf("%d",a+0);
/*這里寫代碼*/
free(a);
/*用完之後需要釋放,否則會造成內存泄漏*/
}
return 0;
}
其它還有calloc、realloc等,C++里也可以用new、delete等運算符(如 confuciuskg 所述),具體用法可以直接網路。

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

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

比如

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

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

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

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

Ⅲ 怎麼在C語言中重新定義數組的長度

C語言一維數組分靜態一維數組和動態一維數組兩種。 一、靜態一維數組,在定義的時候就已經確定其長度。如 int a[10];就是定義了一個長度為10個元素的整型數組。 靜態數組不支持長度的增加。如果要增加長度,只能新定義一個更長的數組,

Ⅳ c語言 自定義數組長度

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

Ⅳ C語言中如何把一個數組長度變短

很想知道你這樣做的場景是什麼?如果是只想取前數組的前4個數,直接根據a[i](i=0,1,2,3)取就可以了,如果你是非要變成4個數字的數組,那就重新定義一個數組,把之前的數據前4個數Copy過去。