總述:
c++結構體指針,顧名思義就是指向結構體的一個指針,這篇博客作用是記錄c++結構體指針的常用用法及我經常犯的一個錯誤。
定義結構體:
-
struct My{
-
My *left;
-
My *right;
-
int val;
-
My(){}
-
My(
int val):left(
NULL),right(
NULL),val(val){}
-
};
一般結構體變量的訪問方式:
-
void test1(){
-
My m;
-
m.val =
1;
-
cout<<m.val<<
endl;
-
}
可見,結構體中的變量,可以直接通過點操作符來訪問。
而對於結構體指針而言:必須通過->符號來訪問指針所指結構體的變量。
-
void test2(){
-
My m;
-
m.val =
1;
-
My *mm;
-
mm = &m;
-
cout<<mm->val<<
endl;
-
}
注意事項:
聲明一個結構體指針記得初始化,一定要初始化,不初始化會出事(重要的事情說三遍)
如下:
-
void test3(){
-
My *m;
-
m->val =
1;
-
}
這份代碼會報一個錯:空指針訪問異常,這是因為m這個指針還沒有初始化,因此他沒有內存空間,自然就不存在有val這個參數。正確打開方式:
-
void test3(){
-
My *m;
-
m =
new My(
3);
-
m->val =
4;
-
cout<<m->val<<
endl;
-
}
以上代碼用new申請了內存空間。問題即可解決。