C語言定義動態陣列

2021-09-14 04:56:04 字數 943 閱讀 1985

今天在unbutu寫一道簡單的約瑟夫環的問題:有n個人,迴圈報數,報到3的人淘汰,求最後剩下的人,我就想定義乙個動態陣列來記錄他們是否被淘汰`,如果淘汰了就把他對應陣列中的值改為0,淘汰n-1個人之後,陣列中值為1的人就是最後剩下的人。

int n;

printf

("請輸入總人數:\n");

scanf

("%d"

,&n)

;int a[n]

=;

我們定義動態陣列的時候,如果我們像上面這樣寫編譯的時候就會報錯,我在網上看到分配動態陣列都是像下面這樣寫的

int n;

printf

("請輸入總人數:\n");

scanf

("%d"

,&n)

;int

*a;a =

(int*)

malloc

(sizeof

(int

)*n)

;

這裡定義了乙個指標a,然後用malloc分配了記憶體,a指向了分配的記憶體空間的首位址,我們想要給它賦值的時候可以用*(a+i)進行賦值,這樣編譯的時候是可以的。但是我們像下面這樣寫也是可以的。

int i;

int n;

printf

("請輸入總人數:\n");

scanf

("%d"

,&n)

;int a[n]

;for

(i =

0;i = n;i++

)

在我的印象中c語言應該是沒辦法分配動態陣列的,在定義陣列的時候必須確定陣列的大小,但是上面這個**編譯時可以的,只要int a[n]在執行時n已經有確定的值的時候是可以通過的,但是我們不可以在定義動態陣列的同時進行初始化,像第乙個**就會報錯。

C定義動態陣列

一 動態陣列,即根據實時變化,可以擴大陣列大小。而這個功能的實現需要用到指標和malloc和realloc函式。int a int malloc 10 sizeof int 那麼 a就相當於乙個有10個元素的陣列。當資料量超過10個放不下的時候,利用 a int realloc a,20 sizeo...

如何使用C語言定義不定長陣列 動態陣列

寫程式的時候經常要定義這樣乙個陣列,要前面程式執行後才能知道陣列的大小,然而c語言不支援直接定義不定長陣列的定義,但是我們可以通過動態陣列實現乙個不定長度的陣列。include include 要使用malloc是要包含此標頭檔案 include 要使用memset是要包含此標頭檔案 intmain...

關於C 動態定義陣列

首先 為什麼需要動態定義陣列呢?這是因為,很多情況下,在預編譯過程階段,陣列的長度是不能預先知道的,必須在程式執行時動態的給出 但是問題是,c 要求定義陣列時,必須明確給定陣列的大小,要不然編譯通不過 如 int array 5 正確 int i 5 int array i 錯誤 因為在編譯階段,編...