C語言中二級指針的應(yīng)用小結(jié)
1. 二級指針概念介紹
在介紹二級指針之前,首先介紹指針這個概念,在C語言中指針是用來指向其他數(shù)據(jù)類型的一種數(shù)據(jù)類型,比如char, int, double等類型,那么二級指針的概念就是指向指針的指針。
2. 二級指針應(yīng)用場景
那么我們?yōu)槭裁匆褂枚壷羔樐兀@就牽扯到C語言最基本的兩種參數(shù)傳遞方式,值傳遞和地址傳遞,顧名思義,值傳遞是指我們將參數(shù)本身傳入函數(shù),而地址傳遞則是將參數(shù)的地址傳入函數(shù),而他們造成的效果是值傳遞無法改變參數(shù)實際值,而地址傳遞則可以改變參數(shù)實際值。
那如果是想在函數(shù)中修改參數(shù)的地址又該怎么辦呢,我們?nèi)绻苯訉⒌刂穫魅牒瘮?shù),效果和值傳遞的方式一致,函數(shù)的地址不會發(fā)生改變,因此我們需要將地址的地址傳入函數(shù)后即可成功改變地址值,那么我們就需要指針的指針,也就是二級指針,下面將舉例來說明二級指針的應(yīng)用。
3.二級指針應(yīng)用實例
我們這里寫一個函數(shù)來實現(xiàn)給指針分配固定大小內(nèi)存。先看下面這段代碼。
錯誤代碼示范:
/*動態(tài)分配內(nèi)存,每個單元占用num個字節(jié)*/ bool apply_memory(int *ptr, unsinged int num) { ptr = (int *)malloc(num * sizeof(char)); if(NULL == ptr) { return FALSE; } return TRUE; } /*測試函數(shù)*/ bool test_code(void) { int *ptr = NULL; bool ret = apply_memory(ptr, 10); if(TRUE == ret) { return TRUE; } return FALSE; }
這段代碼的本意是給傳入函數(shù)的指針動態(tài)分配內(nèi)存,每個元素占用10個字節(jié)大小,但是這里犯了值傳遞的錯誤,導(dǎo)致指針ptr未被修改,因此想要修改ptr,應(yīng)該傳入ptr的地址,正確用例如下。
/*動態(tài)分配內(nèi)存,每個單元占用num個字節(jié)*/ bool apply_memory(int **ptr, unsinged int num) { *ptr = (int *)malloc(num * sizeof(char)); if(NULL == *ptr) { return FALSE; } return TRUE; } /*測試函數(shù)*/ bool test_code(void) { int *ptr = NULL; bool ret = apply_memory(&ptr, 10); if(TRUE == ret) { return TRUE; } return FALSE; }
4.二級指針總結(jié)
實際上二級指針的作用就是為了在函數(shù)當(dāng)中修改一級指針指向的地址,同理,三級指針的作用也是在函數(shù)當(dāng)中修改二級指針指向的地址。依次類推,如果在函數(shù)當(dāng)中想修改某個參數(shù)(變量或者地址),就必須傳入?yún)?shù)的地址才能夠?qū)崿F(xiàn)。
到此這篇關(guān)于C語言中二級指針的應(yīng)用小結(jié)的文章就介紹到這了,更多相關(guān)C語言 二級指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中結(jié)構(gòu)體、聯(lián)合體的成員內(nèi)存對齊情況
這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體、聯(lián)合體的成員內(nèi)存對齊情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05kernel劫持modprobe?path內(nèi)容詳解
這篇文章主要為大家介紹了kernel劫持modprobe?path的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10