C語言如何利用陣列儲存「變數」

2021-09-28 12:18:21 字數 1823 閱讀 5002

背景解決方法

說明眾所周知,陣列僅能儲存常量資料,包括數字常量、字元常量、字串常量。但在實際應用中,可能會遇到需要按需修改陣列中資料值的需求,此時又應該如何解決呢?通過一段時間的測試驗證,解決了專案中的該需求,於是便產生了本篇文章,也是本人的第一篇技術部落格。如果有不足或錯誤之處,還望讀者可以不吝賜教,在下不甚感激!

c語言利用陣列儲存數字常量是一種非常常見的方式,比如:int array[ ] = ;而在實際應用中,也經常會使用該方法,比如:將陣列中的資料儲存至非易失性儲存裝置(比如eeprom)中,便於程式的後續使用。

c語言利用陣列儲存字元常量的方式在嵌入式領域的應用並不是很多,其形式如下:char char_array[5] = ;上例則表明陣列名為char_array的陣列依次儲存了』c』、『h』、『i』、『n』、'a』這5個字元常量。

由於c語言不支援字串操作,所以不支援諸如c++的string關鍵字用於定義字串變數。但是在c語言中,可以利用字串陣列或者指標定義乙個字串變數。如下所示:

字串陣列形式:char string_array = "i love china!";

指標形式:char * pstring = "i love china!";需要注意的是,由於』\0』作為字串的結束標誌,所以無論是使用字串陣列形式或者指標形式定義乙個字串,系統均會在字串的末尾自動加上乙個』\0』。所以上述子字串的實際長度總是比""號中的字元數量多1。

在現實工作過程中,外部需要讀取陣列中的某個資料,但同時,通過操作後台,該資料需要按需進行改變。如果使用上面說的三種陣列形式,無法滿足該要求。

通過查詢資料以及測試驗證,如果使用指標陣列便可以解決該問題。指標陣列,顧名思義便是儲存指標(即位址)的陣列。而在實際應用中,通過指標的解引用操作,便可以實現利用陣列儲存「變數」的要求。具體方法如下所示:

//定義三個變數

int array1 =

100;

int array2 =

200;

int array3 =

300;

//定義乙個指標陣列村儲存上述變數的位址

int* p_array[3]

=;printf

("array1 = %d\n"

,*p_array[0]

);//100

printf

("array2 = %d\n"

,*p_array[1]

);//200

printf

("array3 = %d\n"

,*p_array[2]

);//300

array1 =60;

array2 =90;

array3 =

120;

printf

("array1 = %d\n"

,*p_array[0]

);//60

printf

("array2 = %d\n"

,*p_array[1]

);//90

printf

("array3 = %d\n"

,*p_array[2]

);//120

在實際應用中,通過對陣列中對應元素進行解引操作,便可以獲得該變數的值,從而實現了陣列儲存「變數」的要求。

int num6 =

50;int array[3]

=;

如果按照上面的**初始化陣列,編譯器一定會報錯,會提示陣列僅能儲存常量資料。

c語言變數儲存

記憶體中供使用者使用的儲存空間分為 區與資料區兩個部分。變數儲存在資料區,資料區又可分為靜態儲存區與動態儲存區。靜態儲存是指在程式執行期間給變數分配固定儲存空間的方式。如全域性變數存放在靜態儲存區中,程式執行時分配空間,程式執行完釋放。動態儲存是指在程式執行時根據實際需要動態分配儲存空間的方式。如形...

C 如何儲存變數

定義乙個變數public int name 定義方法,檢視name的值public void test01 public void test02 public void test03 輸出方法 public void a 輸出結果為 1,2,2根據輸入結果反饋,您會發現,在相同的作用域裡,name值...

C語言變數儲存類別

變數除了型別屬性 int char float.外,另外乙個重要屬性就是儲存類別 系統把程式中用到的資料區分為靜態儲存區和動態儲存區。靜態儲存區 在這個區分配了空間的變數,在程式執行過程中一直存在,即相對是不變的。動態儲存區 在這個區分配了空間的變數,可能隨時被釋放,即相對是不斷變化的。c語言提供了...