九九热这里直有精品,1区二区三区在线播放,玖玖爱在线观看资源,国产aⅴ综合网,午夜福利男女,日本亚洲欧美三级,日韩无码黄色导航,内射少妇13区,中文字幕高清网

您身邊的軟件定制專家--9年開發(fā)經(jīng)驗為您護(hù)航

18678812288
0531-88887250

c中malloc和memset在多維數(shù)組上的應(yīng)用

文章作者:濟(jì)南軟件開發(fā) 時間:2016年09月27日

  山東軟件開發(fā)認(rèn)為,兩者都是對內(nèi)存進(jìn)行操作的函數(shù)。應(yīng)用在多維數(shù)組上時,需特別注意一下。

  首先看看兩者原型。

  1.malloc函數(shù),用于從堆上分配指定字節(jié)的內(nèi)存空間。

  void * malloc(size_t n);

  n為要求分配的內(nèi)存字節(jié)數(shù)。如果執(zhí)行成功,函數(shù)返回獲得的內(nèi)存空間的首地址;執(zhí)行失敗,返回值為NULL。

  由于函數(shù)返回值值的類型為void的指針,因此,可以將void指針類型轉(zhuǎn)換后賦值給任意類型指針,這樣就可以通過操作該類型指針來操作從堆上獲得的內(nèi)存空間。

  malloc函數(shù)分配得到的內(nèi)存空間是未初始化的。有時候,在使用前需要對該內(nèi)存空間進(jìn)行初始化,此時用上memset。

  2.memset函數(shù)

  void * memset (void * p,int c,size_t n);

  指針p為所操作的內(nèi)存空間的首地址,c為每個字節(jié)所賦的值,n為所操作內(nèi)存空間的字節(jié)長度,也就是內(nèi)存被賦值為c的字節(jié)數(shù)。

  注意的它是以字節(jié)為單位進(jìn)行賦值的,賦值范圍是0x00~0xFF。

  在多維數(shù)組上的應(yīng)用。如二維。

  double **weight; //二維數(shù)組weight[n][m]

  weight=(double**)malloc(n*sizeof(double*)); //注意是sizeof里頭是double*而不是double。該維裝的是指針

  int i=0;

  for(;i<n;i++){

  weight[i]=(double*)malloc(n*sizeof(double));

  memset(weight[i],0,n*sizeof(double));  //正確。注意是對weight[i],而不是weight

  }

  //memset(weight,0,sizeof(n*n*sizeof(double));

  //這樣的統(tǒng)一對整個二維數(shù)組初始化是錯誤的,因為該二維數(shù)組是通過分次malloc得到的,各內(nèi)存不一定連續(xù)

  //但如果是直接聲明的多維數(shù)組如a[5][5],其內(nèi)存肯定是連續(xù)的,此時統(tǒng)一memset沒問題。


想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。

万荣县| 淮安市| 河曲县| 阳江市| 金川县| 县级市| 吴忠市| 洛阳市| 巢湖市| 台湾省| 西安市| 嘉荫县| 垦利县| 化德县| 广平县| 高陵县| 远安县| 咸阳市| 吉木乃县| 马边| 淮安市| 甘洛县| 德阳市| 金乡县| 安福县| 东辽县| 乌兰浩特市| 淮北市| 昌平区| 安福县| 田阳县| 外汇| 开化县| 忻城县| 永泰县| 黑龙江省| 大石桥市| 越西县| 锡林郭勒盟| 太仆寺旗| 茂名市|