陣列是相同資料型別的元素按一定順序排列的集合
1.陣列可以儲存多個資料
2.陣列中的元素的型別都是相同的,在陣列建立的時候指定。
3.陣列元素個數是一定的,在建立的時候指定。
在建立陣列的時候需要確定亮點:元素型別和元素個數。
基本概念:
1).元素:陣列中的每乙個小空間,就叫做陣列的元素.
2).下標/索引:為了區分陣列中的每乙個元素.c系統就為每1個元素編了1個號碼.
這個號碼從0開始,依次的遞增.
這個號碼就叫做這個元素的下標.
3).長度:指的是陣列中元素的個數.也就是這個陣列做多可以儲存多少個資料.
arr[0] = 50;
陣列的初始化
1).最傻的方式.先宣告陣列,然後再使用下標逐個賦值.
int arr[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
2).在宣告陣列的同時就初始化陣列的元素.
int arr[3] = ;
將陣列的每1個元素的值依次的寫在後面的大括弧之中.
int arr[3] = ;
在編譯器編譯的時候.是將這個**換成了上面那種傻**.
int arr[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
3). 在使用第二種方式初始化的時候,可以省略陣列的長度
int arr = ;
4).第四種初始化方式.只為陣列的前面的元素賦值.
int arr[3] = ;
這個時候,陣列的第0個元素的值是10其他的元素的值被自動初始化為0.
所以,如果我們要講1個陣列中的所有的元素初始化為0
5).第五種初始化方式.指定下標的初始化.
int arr[3] = ;
其他的元素的值就自動的初始化為0.
陣列中資料的訪問
如果要取出陣列中元素的值.那麼就必須要確定到底要取那1個.
通過下標來確定.下標不能越界,因為越界取出的值就是別人的值
元素賦值注意事項
1).為元素賦值的時候.賦值的資料的型別要和元素的型別一致.
當賦值的資料的型別和元素的型別不一致的時候.會做自動型別轉換.
2). 下標不能越界
元素的本質,其實就是1個普通型別的變數.所以我們為陣列的元素賦值.其實也就是為1個普通型別的變數賦值.
陣列之所以可以儲存多個資料是因為陣列中有多個元素.
資料是儲存在元素中.而元素就是1個普通變數.
所以我們元素重複賦值的時候,新值乾掉舊值的.
儲存資料的是陣列的元素,不是陣列。
int arr[3];
1). 宣告1個陣列,
在記憶體中從高位元組向低位元組申請連續的(陣列的長度*每1個元素的位元組數)個位元組的空間.
2).下標為小的的元素在低位元組.
3).元素的值儲存的是資料的二進位制的補碼.
4).陣列的元素的本質就是1個普通型別的變數.
1個陣列就是由多個普通型別的變數聯合而成的.
每1個元素就是1個普通變數.所以沒1個元素也有自己的位址.
1).陣列的位址是陣列中最低位元組的位址.
2).陣列的位址是陣列中下標為0的元素的位址.
3).陣列的位址是陣列中下標為0的元素的低位元組的位址.
4). 重點:
陣列名就代表陣列的位址.
c語言的陣列名中儲存的是陣列的位址.
所以.我們不能直接列印陣列名,這樣得不到陣列的元素的值,因為陣列名中儲存的是陣列的位址.
所以我們應該使用%p來列印陣列名.
陣列的位址==陣列名== 陣列中的低位元組的位址== 陣列中下標為0的元素的位址==陣列中下標為0的元素的低位元組的位址.
1).陣列的每乙個元素的型別相同.所以陣列的每乙個元素占用的位元組空間一樣.
2).使用sizeof運算子可以計算陣列總共占用的位元組數.
sizeof(陣列名);就可以得到這個陣列占用的總的位元組數.
3).得到陣列占用的總的位元組數以後,那麼就可以用總的位元組數除以每1個元素占用的位元組數.
就可以得到陣列的長度.
sizeof(陣列名)/每1個元素的位元組數.就可以得到陣列的長度.
4).不建議將位元組數寫死. 元素占用的位元組數建議也是使用sizeof計算出來.因為不同的系統不同的編譯器
相同的變數可能占用的位元組不一樣.
sizeof(arr) / sizeof(元素型別);
sizeof(arr) / sizeof(arr[0]);
位址傳遞:通過形引數組指標運算元組
實際上操作的就是是實參陣列.
1).
當陣列作為函式的引數的時候
. 會丟失陣列的長度.
所以,這個時候還需要
1個引數
讓呼叫者將傳入的陣列的長度傳進來.
2).
當陣列作為函式的引數的時候.
在函式的內部去修改這個引數陣列的元素,
其實修改的就是實參陣列的元素
3). 強調:
只有陣列作為函式的引數的時候,通過
sizeof
才算不出來長度.
C語音基礎 列舉23
enum 新型別名稱 enum direction 表示新建立了1個資料型別 這個資料型別的名稱叫做.enum direction 可以宣告這個型別的變數.這個變數中就只能儲存這其中指定的任意1個.1 語法格式 enum 列舉型別名稱 變數名 enum direction dir 表示.宣告了1個變...
C 基礎入門 12
deque容器 雙端陣列,可以對頭部進行插入和刪除,也可以對尾端 與vector區別 vector對頭部的插入刪除效率低,資料量越大,效率越低 deque對頭部的插入刪除更快 vector訪問元素的速度更快 deque內部工作原理 內部有中控器,維護每段緩衝區的內容,緩衝區中存放真實資料 中控器維護...
C 語音識別(文字to語音 語音to文字)
最近打算研究一下語音識別,但是發現網上很少有c 的完整 就把自己的學習心得放上來,和大家分享一下。1 speechsdk51.exe 67.0 mb 2 speechsdk51langpack.exe 81.0 mb 文字to語音 這個相當的簡單。1 在com選項卡裡面的microsoft spee...