我們知道,c語言的陣列是固定大小的,儘管可以用乙個變數來定義陣列大小,但是一旦定義了,在大小在執行過程中無法改變。如果一開始就定義乙個容量較大的陣列,那麼由於不知道實際要存放多少元素,可能會造成空間浪費或者還是不夠用。所以,本篇部落格,我們就用c語言實現乙個可以變大小的陣列。
#ifndef _array_h_
#define _array_h_
const
int block_size =2;
typedef
struct
array;
array array_creat
(int init_size)
;//建立乙個陣列
void
array_free
(array *a)
;//**空間
intarray_size
(array *a)
;//目前有多少個空間可以用
int*
array_at
(array*a,
int index)
;//訪問陣列當中某個單元:可以讀也可以寫(即可以做左值也可以做右值)
void
array_inflate
(array*a,
int more_size)
;//陣列增容
void
array_set
(array*a,
int index,
int value)
;//向陣列中寫入東西
#endif
#include
"array.h"
#include
#include
//建立乙個陣列
array array_creat
(int init_size)
//**空間
void
array_free
(array *a)
//目前有多少個空間可以用
intarray_size
(array *a)
//訪問陣列當中某個單元:可以讀也可以寫(即可以做左值也可以做右值)
int*
array_at
(array*a,
int index)
return
&(a->array[index]);
}//陣列增容
void
array_inflate
(array*a,
int more_size)
//array_free(a);
free
(a->array)
; a->array = p;
a->size +
= more_size;
}void
array_set
(array*a,
int index,
int value)
intmain()
//printf("%d\n", array_size(&a));
array_free
(&a)
;//array *pa= array_creat(null, 3);
//pa = array_creat(&a, 3);
//array_free(&a);
//array_free(&a);
system
("pause");
return0;
}
用C語言來實現乙個簡單的數字排序
首先,需要強調一點,排序的方式有很多種,而我寫的這一種應該是最容易理解的,比較適合初學者來看,但是實現排序相對占用 空間比較多,不是一種很好的排序方式。這種方式使用的是一維陣列的方式,首先是將申請的空間初始化,然後將輸入的數分別放到對應序號的一維陣列中,利用一維陣列 來計數,然後利用一維陣列的將數列...
用C語言實現乙個簡單的Linux殼層(Shell)
期末考試考完,進入聖誕假期,終於騰出手寫這篇文章了。這是我們os課的第乙份作業,要求實現乙個簡單的linux shell,用c寫出乙個類似terminal的東西。大致要求 可以迴圈接收command,根據內容實現相應動作,實現幾個常見command即可。作業目的是熟悉幾個知識點 linux的pare...
用兩個棧實現乙個佇列 C語言
考慮用兩個棧實現佇列這樣的特殊結構 我們靠兩個棧實現佇列,肯定是乙個用來存放入隊的資料,乙個用來出棧,在這裡我們主要關注這個樣幾個問題 下面給出答案 這裡不是純 描述,說明問題即可 在這裡給出棧的定義與實現,以及用兩個棧實現佇列的具體 棧的結構定義與方法宣告 define initsize 5 ty...