
1. 一維陣列的定義及參考
定義
型別說明符 陣列名[常量運算式];復制代碼
注意事項
常量運算式的值必須是正整數
陣列的起始元素下標為0
一維陣列在記憶體中是如何存放的
存盤方式同樣從低地址到高地址,并且所有陣列元素都存盤在一個連續的記憶體單元中,陣列所占用的記憶體大小為陣列元素型別所占用的記憶體大小乘以陣列元素的個數,
初始化
定義
陣列型別 陣列名[N]={陣列元素1,陣列元素2,……陣列元素N};復制代碼
注意事項
切不可在定義陣列后再對整個陣列進行賦值操作,可單個元素賦值
2. 二維陣列的定義及參考
定義
型別說明符 陣列名[常量運算式1][常量運算式2];復制代碼
為了便于理解,都將二維陣列視為一個矩陣,常量運算式1表示矩陣的行數,而常量運算式2表示矩陣的列數,
3. 多維陣列的定義及參考
定義
型別說明符陣列名[常量運算式1][常量運算式2][常量運算式3]……;復制代碼
4. 字符陣列的定義及參考
易錯點
定義了不同型別的字符陣列來存放相同的字符,它們占用的記憶體大小相差很大.
arr代表的是陣列的首地址,不能將常量的值賦給陣列地址
&arr[0]和arr的值相同,但是占用的記憶體大小并不相同,&arr[0]代表一個地址變數,arr代表的是整個陣列,
5.陣列作為函式引數的易錯點決議
注意點
1).使用陣列名作為引數進行傳遞時需要注意,傳遞的是陣列的首地址,
#include<stdio.h>#include<stdlib.h>#define N 8int*creat(){int i;printf("creat()函式中產生陣列元素\n");int arr[N];for(i=0;i<N;i++){arr[i]=rand()%100;printf("%d\t",arr[i]);}returnarr;}voidprint(int arr[],int n){int i;for(i=0;i<n;i++){printf("%d\t",arr[i]);}}int main(void){int i;int*p;p=creat();printf("\n通過函式呼叫回傳后得到的陣列\n");print(p,N);return0;}復制代碼
運行結果
creat()函式中產生陣列元素41 67 34 0 69 24 78 58通過函式呼叫回傳后得到的陣列-858993460-858993460-858993460-858993460-858993460-858993460 6 1245056復制代碼
分析;因為在creat()函式中定義的陣列arr在creat()函式呼叫結束后被自動釋放掉了,所以不可能得到正確的結果,
陣列arr的生存周期隨著函式呼叫的結束而結束了
在create函式 定義arr前面加上static
如果你也想成為程式員,想要快速掌握編程,趕緊關注小編加入學習企鵝圈子吧!
里面有資深專業軟體開發工程師,在線解答你的所有疑惑~編程語言入門“so easy”
資料包含:編程入門、游戲編程、課程設計等,
免費學習書籍:

免費學習資料:

6. 動態陣列的創建及參考
定義
型別說明符*陣列名=(型別說明符*)malloc(陣列長度*sizeof(型別說明符));復制代碼
注意點
如果要創建一個N維的動態陣列,那么要從第一維開始創建,直到第N維為止;而釋放時與創建時相反,即從第N維開始釋放,直到第一維為止,
人工釋放free()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251353.html
標籤:C
