當指標作為函式引數時,對引數本身的修改並不影響原來的值,比如下面的**,刪除鍊錶中第乙個值為item的結點。但是結果卻不正確。
void delete(node *head,
int item)
這段**的問題是,第乙個引數是指標型別而head = null修改的實際上是這個指標的乙個副本,所以不會對原來的指標產生效果,下面兩種方法都可以改正這個錯誤。
void delete(node **head,
int item)
//pointer to pointer
void delete(node *&head,
int item)
//pointer to reference
void *malloc(size_t size);該函式成功則返回乙個指向已分配記憶體的指標,失敗返回null,貌似不拋異常,但我沒有找到證據。該函式只負責分配記憶體,並不負責初始化,需要自己初始化,可以用memset或者建構函式來初始化。動態記憶體分配的幾個常見問題
malloc 示例**
char *buffer = (char *)malloc(len * sizeof(char) + 1) ;最簡單的規則:型別 = max( 參與計算前的型別1,參與計算前的型別2,int )
因為32位cpu運算的最小單位就是int
比如 char 和 int 運算,char要轉換為int
int 和 unsigned int運算,int 要轉換為unsigned int.
總的來說,是低精度型別向高精度型別轉換。這樣可以避免丟失資料
指標作為函式引數
臨近畢業,還有找工作的事情,繁忙之際還是堅持看一下c語言的知識,重點的地方或者不清楚的地方還是要記錄一下。本章以指標作為函式傳參來說一下學習心得,大部分內容源自c語言程式設計課本。首先從c語言中函式引數的傳遞方向說起,大家都知道,c語言中函式引數的傳遞方向是單向的,只能由主調函式的實參傳遞到被調函式...
函式指標作為函式引數
先來看看普通的指標 如果有 int a 那麼可以定義乙個 int p a 則p是乙個指向a的指標 定義指標用乙個比較粗淺的方法來說就是把原來的變數名換掉並且前面加星號,比如這裡就是把a換成p並且前面加星號,就定義了乙個可以指向a的指標 同理,如果要定義乙個指向函式的指標,那麼也只要把函式名做類似的處...
指標作為函式引數,C語言指標作為函式引數詳解
include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...