黑马程序员——c语言学习心得——函数传递二维数组
黑馬程序員——c語言學(xué)習(xí)心得——函數(shù)傳遞二維數(shù)組
-------Java培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)、.Net培訓(xùn)、期待與您交流! -------
?
一、定義指針的時(shí)候一定要初始化。
? ?變量定義的時(shí)候給變量初始化,這是保證不出錯(cuò)的一個(gè)很好的習(xí)慣。尤其是在指針的使用上,如果我們沒有給指針初始化,就會(huì)出現(xiàn)野指針,該指針的指向并不是我們所希望的,一旦錯(cuò)誤的釋放了這個(gè)指針,就會(huì)發(fā)生內(nèi)存的訪問。那么如何初始化指針變量呢,一般有以下幾種方法:
? ?1、初始化空指針
? ?int* pInteger=NULL;
? ?2、用已有的變量初始化
? ?int length=5;
? ?int* pInteger=&length;
? ?3、用內(nèi)存分配函數(shù)給指針分配空間
? ?int* pInteger=(int*)malloc(10*sizeof(int));//為指針分配大小為10個(gè)整數(shù)的內(nèi)存空間。
? ?二、正確的申請(qǐng)和釋放內(nèi)存
? ?指針使用之后,如果不釋放指針?biāo)褂玫膬?nèi)存,就會(huì)造成內(nèi)存的泄露,這樣就會(huì)有大量內(nèi)存由于沒能釋放,別的程序不可以使用這部分內(nèi)存,如果一個(gè)程序不停申請(qǐng)內(nèi)存而不去釋放內(nèi)存,很快就會(huì)造成系統(tǒng)的崩潰。那么如何正確的申請(qǐng)和釋放內(nèi)存呢。
? ?1、指針初始化,上面已講
? ?2、正確的申請(qǐng)內(nèi)存
? ?如何申請(qǐng)內(nèi)存才算是正確的申請(qǐng)內(nèi)存呢?首先要判斷指針是否為空,如果不為空,則釋放該指針?biāo)赶虻膬?nèi)存塊,如果不釋放這塊內(nèi)存,而直接就申請(qǐng)內(nèi)存,就會(huì)造成內(nèi)存的泄露。申請(qǐng)內(nèi)存后,一定要判斷是否申請(qǐng)成功。
如:int* pInteger=NULL;//指針定義處
? ? ...
? ? if(pInteger != NULL)
? ? {
? ?? ???free(pInteger);
? ?? ???pInteger=NULL;//指針釋放之后并不為空,要設(shè)置其為空
? ? }
? ? pInteger=(int*)malloc(10*sizeof(int));
? ? if(pInteger != NULL)
? ? {
? ?? ???printf("內(nèi)存申請(qǐng)沒有成功\n!");
? ?? ???exit(0);
? ? }
? ? ...
??3、內(nèi)存釋放
??程序使用完了指針,一定要記得釋放指針指向的內(nèi)存。釋放后一定要記得設(shè)置指針為空指針。因?yàn)閒ree函數(shù)在釋放指針后,只是單純的釋放了該指針指向的內(nèi)存空間,而沒有將指針賦為空值。所以一定要記得在釋放指針后將指針賦為空值。
如:
??int* pInteger=NULL;//指針定義處
??...
??free(pInteger);//釋放指針
??pInteger=NULL; //指針賦為空值
??三、使用指針時(shí)一定要判斷指針是否為空
??在使用指針時(shí)一定要判斷指針是否為空,如果為空,則做相應(yīng)的操作。如果不做判斷,則可能錯(cuò)誤的使用空指針。
??如:char* dest=NULL;
? ?? ?...
? ?? ?strcpy(dest,"string");//如果dest為空則出錯(cuò)
??
??正確的使用方法為:
? ???if(dest == NULL)
? ???{
? ?? ?? ?dest=(char*)malloc(7*sizeof(char));//因?yàn)樽址浴癨0”結(jié)束,
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//所以要申請(qǐng)7個(gè)字符的內(nèi)存
? ?? ?? ?//判斷內(nèi)存申請(qǐng)是否成功
? ?? ?? ?...
? ?? ?}
? ?? ?strcpy(dest,"string");
?
?
?
?
?
?
?
?
?
-------Java培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)、.Net培訓(xùn)、期待與您交流! -------
轉(zhuǎn)載于:https://www.cnblogs.com/zijie/p/4925949.html
總結(jié)
以上是生活随笔為你收集整理的黑马程序员——c语言学习心得——函数传递二维数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二百一十一天 how can i 坚
- 下一篇: [GRYZ2015]快排练习