1樓:風若遠去何人留
c語言在陣列個數未知的情況下,根據應用情況不同,有三種方式。
1,陣列元素總數未知,但是需要儲存的內容是已知的。
其實這是一種變相的已知個數,只是程式設計者不去計算總個數,把這個工作交給系統來做。這時可以通過陣列個數留空,顯式初始化陣列進行宣告。
比如char s = "this is a test string";
就是初始化了這樣乙個陣列s,其空間個數隱式的由初始化字串決定。
2,陣列元素總數未知,但最大規模已知。
比如不知道陣列的總個數,但是確定不會超過100個,那麼就可以定義乙個100個元素的陣列,供儲存呼叫。
3,動態分配陣列。
通過malloc函式,可以動態的分配陣列,然後記錄下當前分配的陣列元素個數,並使用該陣列。當陣列空間不足時,可以通過realloc函式,重新分配空間,擴大陣列元素個數。
比如int size = 100;
int *p = (int *)malloc(sizeof(int) * 100); // 初始化分配100個元素空間。用size儲存當前陣列規模。
p = realloc(sizeof(int)*(size + 100), p);//當空間不足時,增加100個元素。
size+=100;//需要注意的是,必須同步維護size的大小,否則會出錯。
2樓:匿名使用者
可以通過sizeof函式先求出陣列的長度,例如:
int a[50];
int len = sizeof(a)/sizeof(a[0]);
那麼len就是陣列的長度了
3樓:匿名使用者
用乙個在你要輸入的數的範圍之外的數來表示輸入結束.如果你要輸入的數遍及全部整數,那就只有讓使用者先輸入要寫入多少個數了.
宣告的話,既可以宣告乙個足夠大的陣列,也可以用乙個指標變數和乙個整型變數來實現動態陣列.
比如int *a,n;
scanf("%d",&n);
a=(int *)malloc(sizeof(int)*n);
4樓:匿名使用者
c語言的陣列必須定義大小。不能企圖定義乙個a[n](n由使用者輸入)這樣的陣列。
我覺得可以用malloc()和free()。使用者輸入完畢後,再對這些數進行排序。
5樓:安訊網路
比如這樣:
printf("請輸入一些整數(最後乙個數字以#結束):\n");
int i=0,k;
for(k=i;k<=i;k++)
這時「i」就是最後輸入數字的下標(個數-1);
不過原來的陣列宣告時裡必須寫乙個整形常量,那是為了申請空間;
不過你排序的時候,只用最後乙個輸入資料的小標就可以了,那樣它們(那些0)就不會參加排序了~~~
^_^ ~~
c語言如何定義未知個數的陣列
6樓:夜風輕吹
用malloc函式。。。。
比如你要申請int型的未知個數陣列。可以以下程式#include
#include
main()
7樓:匿名使用者
#include
#include
void main()
for(i=0;i for(i=0;i }自己看先,可以查閱calloc函式用法。 8樓:匿名使用者 你可以定義乙個二維陣列嘛 這樣int n; int array[n][20]; 這樣這個二維陣列的每一行都是乙個一維陣列 9樓:匿名使用者 可以用new, 1.....new int[n][20]; 2.for(int i=0;i c語言中怎樣定義乙個未知長度的陣列?? 10樓:金魚 除常量陣列外,陣列必須是定長的,如果不知道長度,有幾種辦法,固定分配乙個認為不會出現的維度值,或者對陣列進行動態分配,如: int *parray,ncount; int insert(int * parray,int ncount,int nelement) main() 11樓:手機使用者 設定值等於null就行了 追問: 給個例子白?? 小弟 是自學的! 悟性低啦??謝謝!! 回答: int a=null; 就是把 陣列 a的值設定為空。所以系統沒有為他分配記憶體,等你給陣列a賦值的時候 系統會自動給他分配相應的記憶體 追問: 我在手機上的搜尋貌似說的是用到 鍊表 和指標神魔的?? 但是找不到啦!!麻煩您能幫忙給個例子不??謝謝!! 回答: 鍊表 指標 需要用這麼麻煩嗎。 我從沒這樣弄過。 你需要的是乙個未知長度的 陣列 ,所以不給這個陣列賦值就是最好的。 比如int a; 這就是申明乙個 陣列變數 a ,但沒給他賦值 所以他就沒有長度 追問: 哦 好吧!! 嘿嘿!!謝謝啦!!知道啦!! 回答: 速度選個滿意唄 有初始化的陣列定義可以省略方括號中的陣列大小。例如,下面的 中陣列定義為5個元素 int a 如 char str program 編譯時必須知道陣列的大小。如果陣列大小要根據運 況來確定,可以使用動態陣列 int p int calloc num,sizeof int 一般有四種陣列定義方式,以一... include include int a 1000 int main 等下送乙個回來再幫你解答哈,應該不是很急吧 看過csdn的帖子過來的吧,你可以按照那上面說的實現。我自己設計了以個實現方法,採用動態陣列 char p int i,k cfile mfile mfile.open t d tas... 夏之夜 不行,你的x沒有定義,還有你的x是乙個變數你可以把它初始化為0,int a 2 2 這樣是將這個二維陣列初始化為0,你也可以這樣int a 2 2 scanf d a 1 1 for int i 0 i 2 i for int j 0 j 2 j 鹹樂心 現在我遇到這樣乙個問題,乙個6 6的...c語言陣列宣告問題,C語言中定義陣列時對其全部初始化為1的問題
C語言中從廣西讀入未知長度的數字,放個陣列
c語言的陣列中能不能包含未知數,關於c語言陣列的方括號中能不能使用變數的問題。