C C 程式設計 用C語言簡單實現乙個可變陣列

2021-10-05 23:31:21 字數 1774 閱讀 2276

我們知道,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...