1、指向指標的指標
#include int main()
2、問題程式:重置動態空間大小
原理:先申請記憶體空間,複製原來記憶體空間裡的值到新申請的記憶體空間裡面,釋放原先的記憶體空間。這裡要用到指標的指標,因為一段記憶體空間你是用乙個指標去指向,如果要對這段記憶體空間進行修改,那麼就必須&指標作為函式的引數,也就是指標的指標,這就是指標的傳址呼叫。
#include #include int reset(char**p, int size, int new_size)
free(*p);
*p = pt; //p指標指向新的記憶體位址
} else
return ret;
}int main()
free(p);
return 0;
}
強調:一開始我以為這個程式有些錯誤,因為我認為他的pt指標沒有free,後面才反應過來,在函式內部,用指標p指向了pt,因此在主函式裡面free了指標p,就是free指標pt。
17行和34行兩個free理解起來還是很有意思的,在17行的free主要是釋放主函式的記憶體空間,而34行是釋放函式裡面重置的動態空間。
3、二維陣列
因為記憶體肯定是一維的,所以二維陣列在記憶體中肯定以一維的形式存在,所以可以把二維陣列看做一維陣列。
程式:遍歷二維陣列
#include void printarray(int a, int size)
}int main()
, , };
//int a[3][3] = ; 逗號表示式,所以不要用括號
int* p = &a[0][0];
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
printf("\n");
} printf("\n");
printarray(p, 9);
return 0;
}
第二個程式表明二維陣列在記憶體中是以一維陣列的形式表示的。
4、陣列名
結論:1、二維陣列名可以看做是指向陣列的常量指標
2、二維陣列可以看做一維陣列
3、二維陣列中的每個元素都是同型別的一維陣列。
程式:如何動態申請二維陣列
小結:程式:如何動態申請三維陣列
多維陣列和多維指標
指向指標的指標 指標變數在記憶體中會占用一定的空間 可以定義指標來儲存指標變數的位址 int pp本質上還是指標,只是兩個 告訴你這是乙個指向指標的指標char p null char p2 p p2 給p賦值沒有問題,但怎麼使用p 呢?這就需要我們前面多次提到的鑰匙 第一步 根據 p 這個變數,取...
多維陣列 和 多維指標
指標變數在記憶體中會占用一定的空間。可以定義指標來儲存指標變數的位址值。舉例 舉例說明,多級指標的使用,重置動態空間大小 include include int reset char p,int size,int new size else return ret int main return 0 ...
多維陣列和多維指標
專題四 指標和陣列 下 包括以下章節 指標變數在記憶體中會占用一定的空間可以定義指標來儲存指標變數的位址值為什麼需要指向指標的指標?指標在本質上也是變數 對於指標也同樣存在傳值呼叫與傳址呼叫 2 1.c include include char p p指向的是乙個char 指標 int size 原...