C語(yǔ)言學(xué)習(xí)資源匯總,史上最全面總結(jié),沒有之一
C/C++學(xué)習(xí)資源(百度云盤鏈接)
計(jì)算機(jī)二級(jí)資料(過級(jí)專用)
C語(yǔ)言學(xué)習(xí)路線(從入門到實(shí)戰(zhàn))
編寫C語(yǔ)言程序的7個(gè)步驟和編程機(jī)制
C語(yǔ)言基礎(chǔ)-第一個(gè)C程序
C語(yǔ)言基礎(chǔ)-簡(jiǎn)單程序分析
VS2019編寫簡(jiǎn)單的C程序示例
簡(jiǎn)單示例,VS2019調(diào)試C語(yǔ)言程序
C語(yǔ)言基礎(chǔ)-基本算法
C語(yǔ)言基礎(chǔ)-數(shù)據(jù)類型
C語(yǔ)言中的輸入輸出函數(shù)
C語(yǔ)言流程控制語(yǔ)句
C語(yǔ)言數(shù)組——一維數(shù)組
C語(yǔ)言數(shù)組——二維數(shù)組
C語(yǔ)言數(shù)組——字符數(shù)組
C語(yǔ)言中常用的6個(gè)字符串處理函數(shù)
精心收集了60個(gè)C語(yǔ)言項(xiàng)目源碼,分享給大家
C語(yǔ)言核心技術(shù)——函數(shù)
C代碼是怎樣跑起來的?
C語(yǔ)言實(shí)現(xiàn)字符串的加密和解密
C語(yǔ)言——文件的基本操作
使用C語(yǔ)言鏈表創(chuàng)建學(xué)生信息并且將信息打印輸出
圖解C語(yǔ)言冒泡排序算法,含代碼分析
實(shí)例分析C語(yǔ)言中strlen和sizeof的區(qū)別
開發(fā)C語(yǔ)言的3款神器,VS2019、VScode和IntelliJ Clion
動(dòng)圖圖解C語(yǔ)言選擇排序算法,含代碼分析
動(dòng)圖圖解C語(yǔ)言插入排序算法,含代碼分析
C語(yǔ)言指針數(shù)組和數(shù)組指針詳解
5分鐘搞懂C語(yǔ)言中的傳值和傳址
C語(yǔ)言實(shí)例專欄(持續(xù)更新中…)
什么是動(dòng)態(tài)數(shù)組?動(dòng)態(tài)數(shù)組是相對(duì)于靜態(tài)數(shù)組而言的,從“動(dòng)”字可以看出它的靈活性。靜態(tài)數(shù)組的長(zhǎng)度是預(yù)先定義好的,在整個(gè)程序中,一旦給定數(shù)組大小后就無法改變。而動(dòng)態(tài)數(shù)組則不然,它可以根據(jù)程序需要重新指定數(shù)組大小。動(dòng)態(tài)數(shù)組的內(nèi)存空間是由堆動(dòng)態(tài)分配的,通過執(zhí)行代碼為其分配存儲(chǔ)空間,只有程序執(zhí)行到分配語(yǔ)句時(shí),才為其分配存儲(chǔ)空間。
動(dòng)態(tài)數(shù)組和一般數(shù)組(靜態(tài)數(shù)組)的區(qū)別在創(chuàng)建動(dòng)態(tài)數(shù)組的過程中要遵循一個(gè)原則,那就是從外層向里層逐層創(chuàng)建,從里層向外層逐層釋放。如果要?jiǎng)?chuàng)建一個(gè)N維的動(dòng)態(tài)數(shù)組,那么要從第一維開始創(chuàng)建,直到第N維為止;而釋放時(shí)與創(chuàng)建時(shí)相反,即從第N維開始釋放,直到第一維為止。下面我們一起來看看一維動(dòng)態(tài)數(shù)組和二維動(dòng)態(tài)數(shù)組。
一維動(dòng)態(tài)數(shù)組類型說明符* 數(shù)組名 = (類型說明符*)malloc(數(shù)組長(zhǎng)度*sizeof(類型說明符))
//
// Created by 沖哥 on 2022/11/26.
// 微信關(guān)注【C語(yǔ)言中文社區(qū)】,免費(fèi)領(lǐng)取500G學(xué)習(xí)資料
//
#include#includeint main() {int n; //用來接收要?jiǎng)?chuàng)建的一維動(dòng)態(tài)數(shù)組的長(zhǎng)度
int *arr;
printf("請(qǐng)輸入所要?jiǎng)?chuàng)建的一維動(dòng)態(tài)數(shù)組的長(zhǎng)度:");
scanf("%d", &n);
if ((arr = (int *) malloc(sizeof(int) * n)) == NULL) {//使用malloc來動(dòng)態(tài)分配內(nèi)存
printf("分配內(nèi)存空間失敗!\n");//如果內(nèi)存分配失敗,報(bào)錯(cuò)異常退出
return -1;
}
for (int i = 0; i< n; i++) {//通過循環(huán)給數(shù)組賦值并在控制臺(tái)進(jìn)行打印
arr[i] = i + 1;
printf("%d\t", arr[i]);
}
free(arr); //釋放內(nèi)存空間
return 0;
}
請(qǐng)輸入所要?jiǎng)?chuàng)建的一維動(dòng)態(tài)數(shù)組的長(zhǎng)度:8
1 2 3 4 5 6 7 8
二維動(dòng)態(tài)數(shù)組類型說明符** 數(shù)組名 = (類型說明符**)malloc(第一維長(zhǎng)度*sizeof(類型說明符*))
for(int i=0;i<第一維長(zhǎng)度;i++){數(shù)組名[i]=(類型說明符*)malloc(第二維長(zhǎng)度*sizeof(類型說明符))
}
//
// Created by 沖哥 on 2022/11/26.
// 微信關(guān)注【C語(yǔ)言中文社區(qū)】,免費(fèi)領(lǐng)取500G學(xué)習(xí)資料
//
#include#includeint main() {int n1, n2;
int **arr;
printf("請(qǐng)輸入所要?jiǎng)?chuàng)建的動(dòng)態(tài)數(shù)組的第一維長(zhǎng)度:");
scanf("%d", &n1);
printf("請(qǐng)輸入所要?jiǎng)?chuàng)建的動(dòng)態(tài)數(shù)組的第二維長(zhǎng)度:");
scanf("%d", &n2);
if ((arr = (int **) malloc(n1 * sizeof(int *))) == NULL)//使用malloc給第一維分配內(nèi)存
{printf("分配內(nèi)存空間失敗!\n");//如果內(nèi)存分配失敗,報(bào)錯(cuò)異常退出
return -1;
}
for (int i = 0; i< n1; i++) {if ((arr[i] = (int *) malloc(n2 * sizeof(int))) == NULL)//使用malloc給第二維分配內(nèi)存
{printf("分配內(nèi)存空間失敗!\n");//如果內(nèi)存分配失敗,報(bào)錯(cuò)異常退出
return -1;
}
}
for (int i = 0; i< n1; i++) {//通過循環(huán)給數(shù)組賦值并在控制臺(tái)進(jìn)行打印
for (int j = 0; j< n2; j++) {arr[i][j] = i * n2 + j + 1;
printf("%d\t", arr[i][j]);
}
printf("\n");
}
for (int i = 0; i< n1; i++) {free(arr[i]);//釋放第二維
}
free(arr);//釋放第一維
return 0;
}
請(qǐng)輸入所要?jiǎng)?chuàng)建的動(dòng)態(tài)數(shù)組的第一維長(zhǎng)度:5
請(qǐng)輸入所要?jiǎng)?chuàng)建的動(dòng)態(tài)數(shù)組的第二維長(zhǎng)度:4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
代碼中的注釋已經(jīng)寫的很詳細(xì)了,如果還有什么疑問歡迎評(píng)論區(qū)留言。
如果您覺得本篇文章對(duì)您有幫助,請(qǐng)點(diǎn)贊,轉(zhuǎn)發(fā)給更多的人。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧