c語言中靜態陣列的定義和初始化 - w3c學習教程

文章推薦指數: 80 %
投票人數:10人

c語言中靜態陣列的定義和初始化,陣列可以初始化,即在定義時,使它包含程式馬上能使用的值。

例如,下面的定義了一個全域性陣列,並用一組fibonacci數 ... c語言中靜態陣列的定義和初始化 2021-06-1806:52:12字數2937閱讀5146 陣列可以初始化,即在定義時,使它包含程式馬上能使用的值。

例如,下面的**定義了一個全域性陣列,並用一組fibonacci數初始化: intiarray[10]= 初始化陣列的值的個數不能多於陣列元素個數,初始化陣列的值也不能通過跳過逗號的方式來省略,這在c中是允許的,但在c++中不允許。

例如,下面的**對陣列進行初始化是錯誤的: intarrayl[5]=;//error:初始化值個數多於陣列元素個數 intarray2[5]=;//error:初始化值不能省略 intarray3[5]=;//error:初始化值不能省略 intarray4[5]={};//error:語法格式錯誤 voidmain() 初始化值的個數可少於陣列元素個數。

當初始化值的個數少於陣列元素個數時,前面的按序初始化相應值,後面的初始化為0(全域性或靜態陣列)或為不確定值(區域性陣列)。

例如,下面的程式對陣列進行初始化: //********************* //**  ch7_2.cpp ** //********************* #include intarray1[5]=; staticintarray2[5]=; voidmain() ;staticintarr2[5]=; intn; cout< for(n=0;n<5;n++) cout< cout< cout< cout< }執行結果為: global: l 2 3 0 0 globalstatic: 1 0 0 0 0 local: 223567235672356723567 localstatic: 1 2 0 0 0 例中,全域性陣列和全域性靜態陣列的初始化是在主函式執行之前完成的,而區域性陣列和區域性靜態陣列的初始化是在進入主函式後完成的。

全域性陣列arrayl[5]對於初始化表的值按序初始化為1,2,3,還有兩個元素的值則按預設初始化為0。

全域性靜態陣列array2[5]與全域性陣列的初始化情況一樣,初始化表值(1)表示第1個元素的值,而不是指全部陣列元素都為1。

區域性陣列arrl[5]根據初始化表值的內容按序初始化,由於初始化表值只有1個,所以還有4個元素的值為不確定。

在這裡均為數值23567。

區域性靜態陣列arr2[5]先根據初始化表按序初始化,其餘3個陣列元素的值預設初始化為0。

2.初始化字元陣列 初始化字元陣列有兩種方法,一種是: chararray[10]=; 另一種是: chararray[10]=; 第一種方法用途較廣,初始化時,系統自動在陣列沒有填值的位置用,'/0'補上。

另外,這種方法中的花括號可以省略,即能表示成: chararray[10]="hello"; 第二種方法一次一個元素地初始化陣列,如同初始化整型陣列。

這種方法通常用於輸入不容易在鍵盤上生成的那些不可見字元。

例如,下面的**中初始化值為若干製表符: charcharray[5]=; 編譯時必須知道陣列的大小。

通常,宣告陣列時方括號內的數字決定了陣列的大小。

有初始化的陣列定義又省略方括號中的陣列大小時,編譯器統計花括號之間的元素個數,以求出陣列的大小。

例如,下面的**產生相同的結果: staticinta1[5]=; staticinta2=; 讓編譯器得出初始化陣列的大小有幾個好處。

它常常用於初始化一個元素個數在初始化中確定的陣列,提供程式設計師修改元素個數的機會。

在沒有規定陣列大小的情況下,怎麼知道陣列的大小呢?sizeof操作解決了該問題。

例如,下面的**用sizeof確定陣列的大小: //********************* //**ch7_3.cpp** //********************* #include voidmain() ;for(inti=0;i cout《執行結果為: 124816 sizeof操作使for迴圈自動調整次數。

如果要從初始化a陣列的集合中增刪元素,只需重新編譯即可,其他內容無須更動。

每個陣列所佔的儲存量都可以用sizeof操作來確定!sizeof返回指定項的位元組數。

sizeof常用於陣列,使**可在16位機器和32位機器之間移植: 對於字串的初始化,要注意陣列實際分配的空間大小是字串中字元個數加上末尾的,'/0',結束符。

例如,下面的**定義一個字元陣列: //********************* //**  ch7_4.cpp ** //********************* #include voidmain() {charch="howareyou"; cout< 執行結果為: sizeofarray:12 sizeofstring:ll 例中,陣列大小為12,而字串長度為11。

省略陣列大小只能在有初始化的陣列定義中。

例如,下面的**將產生一個編譯錯誤: inta;//error:沒有確定陣列大小 在定義陣列的場合,無論如何,編譯器必須知道陣列的大小。

C初始化和賦值的不同c中初始化和賦值操作差別是很大的。

對於基本資料型別差別不大比如inta12initializationcopy0x000c... C類初始化列表的成員初始化順序includeusingnamespacestdclassavoidprintcoutn1n1n2上段的執行結果是... C的類初始化列表建構函式初始化列表以一個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟一個放在括號中的初始化式。

例如csample建構函式... 相關推薦 C陣列成員的初始化 Cstatic變數的初始化 C變數的初始化方式 c年月日的初始化 C類的成員初始化 相關推薦 C類成員的初始化 C語言中的全域性變數記憶體分配和初始化順序 初始化和賦值的區別 普通引用和const引用的初始化 C語言指標的初始化和賦值 C陣列初始化的誤解 C成員初始化列表的作用 C初始化類時的順序。

C初始化物件的方法總結 變數的定義,初始化和宣告 物件的構造和初始化過程 相關閱讀 隨機數與迴圈連結串列之間的問題 矩陣特徵值和特徵向量的理解 Dom4j帶換行符屬性值讀取後變成空格的解決辦法 c語言中靜態陣列的定義和初始化 python模擬表單上傳檔案 函式指標指標函式 topic 科技 教育 python linux 社會 數碼 java c++ 遊戲 演算法 資料庫 健康 文化 mysql 汽車 娛樂 科學 財經 資料結構 C語言 職場 php C oracle c# 作業系統 工作 體育 sql 網路



請為這篇文章評分?