指针的使用二级指针
當(dāng)使用以一級指針的時候,就不能達(dá)到修改指針的效果
#include <iostream> using namespace std; struct Teacher {char name[64];int age; }; int getTeacher(Teacher *p) {Teacher *temp = NULL;if( p == NULL ){return -1;}temp = (Teacher *) malloc(sizeof(Teacher));if(temp == NULL){return -2;}temp ->age =33;p = temp;return 0; }int main() {Teacher *pt1= NULL;getTeacher(pt1); //getTeacher(Teacher *p = pt1)這是真實的調(diào)用過程雖然,雖然 p 和pt1的值相同,但是改變p并不是改變pt1。//通過類比也可以明顯的知道,想要改變數(shù)值可以通過指針,因此想要改變指針需要使用指向指針的指針;cout << "age :" << pt1->age << endl;system("pause"); return 0; }先從一個指針說起 假設(shè) int* B = C;那么,B是一個指針,指向C, *B 是B的解引用 也就是C的值,但是B指向的內(nèi)容是C的值,B也占內(nèi)存,因此B也有自己的地址;那么看來當(dāng)是二級指針的時候,*A= B = 0x00000008
* A = B = “abscd”;
A = &B = 0x00000004;
&A = 0x00000005;
#include
using namespace std;
int a = 10;
int b = 100;
int *q;
void func(int **p)
{
cout << “func: &p = “<< &p << “, p =” << endl;
*p = &b;
cout <<”func : &p =” << &p << “,p = “<
#include
using namespace std;
// 二級指針的使用 [11/24/2017 Andrew]
struct Teacher
{
char name[64];
int age;
};
// 在被調(diào)用函數(shù)中獲取資源必須使用二級指針,因為局部函數(shù)
//中申請的變量會在函數(shù)調(diào)用結(jié)束的時候被釋放掉,因此要使用二級指針 獲取申請內(nèi)存的實際地址
//這樣就算局部函數(shù)申請結(jié)束的時候,也能夠得到想要的內(nèi)存空間
int getTeacher(Teacher **p) //傳進(jìn)來的指針是傳值,多以編譯器會從新申請一個指針,只不過跟原來的指針指向同一個內(nèi)存區(qū)域
//會被編譯但是新的指針的改變并不會改變原來指針值,只能通過指針改變指針指向的值,反過來要想改變指針必須使用指向指針的指針
{
Teacher *temp = NULL;
if( p == NULL )
{
return -1;
}
temp = (Teacher *) malloc(sizeof(Teacher));
if(temp == NULL)
{
return -2;
}
temp ->age =33;
//通過修改實參的地間接的修改實參的值
*p = temp;
}
//C++中的指針的引用
int getTeacher2(Teacher * &myp)
{
//因為使用的是引用,因此給myp賦值就相當(dāng)于給main函數(shù)中的pt1賦值
myp = (Teacher *) malloc(sizeof(Teacher));
if( myp == NULL )
{
return -1;
}
myp ->age =36;
return 0;
}
void FreeTeacher(Teacher *pt)
{
if(pt == NULL)
{
return ;
}
free(pt);
}
int main()
{
Teacher *pt1= NULL;
// 1 C語言中的二級指針 [11/24/2017 Andrew]
getTeacher(&pt1);
cout << “age :” << pt1->age << endl;
FreeTeacher(pt1);
// 2 C++中的指針的引用 [11/24/2017 Andrew]
getTeacher2(pt1);
cout << “age :” << pt1->age << endl;
FreeTeacher(pt1);
system(“pause”);
return 0;
}
“`
總結(jié)
- 上一篇: 作者:赵晨(1980-),男,深圳般若计
- 下一篇: 作者:陆扬(1985-),女,中国科学院