之前對多重指標操作心存忐忑,不能很熟練使用,本質原因是不了解其實質,因此對其進行了學習。
一、簡單的**如下
#include #include #include void myarray(char ***p2, int num)
{ int i=0;
//不要判斷*p2所指向的記憶體,
//因為傳參是&p1,也就是指標變數p1的位址;
//如果再判斷*p2,也就是判斷指標變數p1的指向了,本來p1就指向null,判斷沒有什麼意義。
//畢竟這裡判斷的目的是,判斷p2現在有沒有存放位址了而已
char **tmp = null;
if(p2 == null)
return;
/*int* p;
p = (int*)malloc( sizeof(int)*100 );
//sizeof()中的型別只是表明多大而已,和p的型別沒有必然的聯絡
//一般來說,強制轉換為什麼型別,則sizeof()中的型別就少一顆*;
*/ //tmp = (char **)malloc(sizeof(tmp) *100);//sizeof(tmp)=4,畢竟tmp是乙個指標。
tmp = (char **)malloc(sizeof(char*) * 100);//這裡的100是說有100個字串指標
if(tmp == null)
return;
for (i =0; i
對**的解釋如下
另外,這和二重指標與一重指標類似,之所以子函式中要三重指標作為引數,是因為要改變主函式中二重指標的指向。(這裡主函式中是char** p=null,而子函式中要將p指向新開闢的有100個元素的空間)如果子函式中還是二重指標,而主函式中傳參也是二重指標的話,就類似於值傳遞了,不能修改主函式二重指標的指向。按此道理,三重和四重應該是類似的道理的,只是很少用到。
二、leetcode的題目舉例
C 多重指標
首先看乙個經典的例子 int a,x 10,y 20 a int malloc sizeof int x 分配是什麼?for i 1 i 10 i for i 1 i 1 a int malloc sizeof int x 可以理解為二重指標的第一層,分配了10個int型的二重指標空間 a是三重指標...
C語言複習 多重指標
多重指標指的是在一條語句中有2個或以上的 如下 include int main int pa int p pa printf initial p d n p p printf after p the p d n p p printf after p,the p d n p p printf aft...
C 動態陣列,多重指標問題
今天遇到乙個問題,要開闢乙個二維指標空間,詳細的看了一下網上有關動態指標 動態陣列等開闢方法以及學習前輩們對於動態陣列問題的解決經驗!一 首先說明一下多重指標問題,這裡解釋到第三層,為了方便理解,我們可以將三重指標理解為三維陣列,首先看乙個經典的例子 int a,x 10,y 20 a int ma...