C語言數(shù)組從創(chuàng)建到內(nèi)存存儲的示例詳解
數(shù)組基礎(chǔ)概念
數(shù)組是存儲固定數(shù)量同類型元素的數(shù)據(jù)結(jié)構(gòu),內(nèi)存中連續(xù)存儲,通過下標(從0開始)快速訪問。
聲明與初始化示例
int arr[5]; // 聲明未初始化
int nums[3] = {1, 2, 3}; // 完全初始化
char str[] = "hello"; // 自動推導(dǎo)長度(包含'\0')一維數(shù)組操作
遍歷與輸入輸出
for (int i = 0; i < 5; i++) {
scanf("%d", &arr[i]); // 輸入
printf("%d ", arr[i]); // 輸出
}內(nèi)存連續(xù)性驗證
printf("%p\n", &arr[0]); // 輸出相鄰地址差為sizeof(int)
printf("%p\n", &arr[1]); // 如4字節(jié)(int類型)
二維數(shù)組
聲明與遍歷
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
}內(nèi)存布局
二維數(shù)組按行優(yōu)先連續(xù)存儲,matrix[0][2]與matrix[1][0]地址相鄰。
實用技巧
計算數(shù)組長度
int size = sizeof(arr) / sizeof(arr[0]); // 適用于一維數(shù)組
二分查找實現(xiàn)
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2; // 防溢出
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}常見錯誤
- 下標越界:訪問
arr[5](聲明為arr[5]時合法下標為0-4)。 - 未初始化:直接讀取
int arr[10];的值是未定義的。 - 變長數(shù)組限制:VLA(如
int arr[n])不可初始化且部分編譯器不支持。
應(yīng)用場景
- 字符串處理:字符數(shù)組存儲文本,注意結(jié)尾
'\0'。 - 數(shù)據(jù)批量處理:如傳感器數(shù)據(jù)、游戲坐標等。
- 算法優(yōu)化:利用連續(xù)存儲特性提升訪問效率(如緩存命中)。
通過理解內(nèi)存布局和下標機制,可高效操作數(shù)組并避免常見錯誤。
到此這篇關(guān)于C語言數(shù)組詳解:從創(chuàng)建到內(nèi)存存儲的文章就介紹到這了,更多相關(guān)C語言數(shù)組內(nèi)存存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C語言實現(xiàn)動態(tài)數(shù)組Vector
這篇文章主要為大家詳細介紹了使用C語言實現(xiàn)動態(tài)數(shù)組Vector的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
string,CString,char*之間的轉(zhuǎn)化
下面是MFC/C++/C中字符類型CString, int, string, char*之間的轉(zhuǎn)換的說明與舉例,經(jīng)常用的東西,相信對于用C/C++的朋友,還是比較有用的2013-03-03
關(guān)于VS+QT5應(yīng)用程序換圖標的解決方案
這篇文章主要介紹了VS+QT5應(yīng)用程序換圖標的處理方案,本文給大家提供了兩種解決方案供大家參考,每種方法給大家講解的都非常詳細,需要的朋友可以參考下2021-12-12
C語言鏈表實現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細介紹了C語言鏈表實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06
C++訪問std::variant類型數(shù)據(jù)的幾種方式小結(jié)
std::variant是?C++17中引入的一個新的類模板,提供了一種存儲不同類型的值的方式,本文主要介紹了C++訪問std::variant類型數(shù)據(jù)的幾種方式小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-02-02
C++中幾種將整數(shù)轉(zhuǎn)換成二進制輸出的方法總結(jié)
下面小編就為大家?guī)硪黄狢++中幾種將整數(shù)轉(zhuǎn)換成二進制輸出的方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09

