c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例
詳解C語(yǔ)言用malloc函數(shù)申請(qǐng)二維動(dòng)態(tài)數(shù)組的實(shí)例
C語(yǔ)言在程序運(yùn)行中動(dòng)態(tài)的申請(qǐng)及釋放內(nèi)存十分方便,一維數(shù)組的申請(qǐng)及釋放比較簡(jiǎn)單。
Sample one
#include
int main()
{
char * p=(char *)malloc(sizeof(char)*5);//申請(qǐng)包含5個(gè)字符型的數(shù)組
free(p);
return 0;
}
是否申請(qǐng)二維動(dòng)態(tài)內(nèi)存也如此簡(jiǎn)單呢?答案是否定的。申請(qǐng)二維數(shù)組有一下幾種方法
Sample two
/* 申請(qǐng)一個(gè)5行3列的字符型數(shù)組*/
char **p=NULL;int i;
p=(char ** )malloc(sizeof(char *)*5);
for(i=0;i<5;i++)
p[i]=malloc(sizeof(char)*3);
這種方式的優(yōu)點(diǎn)是行和列都是可變的,但釋放時(shí)必須釋放多次,先釋放p[n],在釋放p
/*釋放內(nèi)存*/
for(i=0;i<5;i++)
free(p[i]);
free(p);
Sample three
/*用指向數(shù)組的指針的方式申請(qǐng)內(nèi)存*/
char (*p)[3]=(char(*)[3])malloc(sizeof(char)*5*3)//p是一個(gè)指向包含3個(gè)元素的數(shù)組的指針
這種方式分配的內(nèi)存只須釋放一次
free(p);
這種方式的缺點(diǎn)是顯而易見(jiàn)的,列是不可變的!
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
總結(jié)
以上是生活随笔為你收集整理的c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java分页代码思路,记录--java
- 下一篇: linux tcp连接计算机,计算机基础