定義程序員
類型說明符 數組名[常量表達式];複製代碼編程
注意事項數組
常量表達式的值必須是正整數編程語言
數組的起始元素下標爲0函數
一維數組在內存中是如何存放的學習
存儲方式一樣從低地址到高地址,而且全部數組元素都存儲在一個連續的內存單元中,數組所佔用的內存大小爲數組元素類型所佔用的內存大小乘以數組元素的個數。spa
初始化設計
定義blog
數組類型 數組名[N]={數組元素1,數組元素2,……數組元素N};複製代碼遊戲
注意事項
切不可在定義數組後再對整個數組進行賦值操做,可單個元素賦值
定義
類型說明符 數組名[常量表達式1][常量表達式2];複製代碼
爲了便於理解,都將二維數組視爲一個矩陣,常量表達式1表示矩陣的行數,而常量表達式2表示矩陣的列數。
定義
類型說明符數組名[常量表達式1][常量表達式2][常量表達式3]……;複製代碼
易錯點
定義了不一樣類型的字符數組來存放相同的字符,它們佔用的內存大小相差很大.
arr表明的是數組的首地址,不能將常量的值賦給數組地址
&arr[0]和arr的值相同,可是佔用的內存大小並不相同,&arr[0]表明一個地址變量,arr表明的是整個數組,
注意點
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」
資料包含:編程入門、遊戲編程、課程設計等。
免費學習書籍:
免費學習資料:
定義
類型說明符*數組名=(類型說明符*)malloc(數組長度*sizeof(類型說明符));複製代碼
注意點
若是要建立一個N維的動態數組,那麼要從第一維開始建立,直到第N維爲止;而釋放時與建立時相反,即從第N維開始釋放,直到第一維爲止。
人工釋放free()