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