C++ 結構體指針


總述:

c++結構體指針,顧名思義就是指向結構體的一個指針,這篇博客作用是記錄c++結構體指針的常用用法及我經常犯的一個錯誤。

定義結構體:


   
   
  
  
          
  1. struct My{
  2. My *left;
  3. My *right;
  4. int val;
  5. My(){}
  6. My( int val):left( NULL),right( NULL),val(val){}
  7. };

一般結構體變量的訪問方式:


   
   
  
  
          
  1. void test1(){
  2. My m;
  3. m.val = 1;
  4. cout<<m.val<< endl;
  5. }

可見,結構體中的變量,可以直接通過點操作符來訪問。

而對於結構體指針而言:必須通過->符號來訪問指針所指結構體的變量。


   
   
  
  
          
  1. void test2(){
  2. My m;
  3. m.val = 1;
  4. My *mm;
  5. mm = &m;
  6. cout<<mm->val<< endl;
  7. }

注意事項:

聲明一個結構體指針記得初始化,一定要初始化,不初始化會出事(重要的事情說三遍)

如下:


   
   
  
  
          
  1. void test3(){
  2. My *m;
  3. m->val = 1;
  4. }

這份代碼會報一個錯:空指針訪問異常,這是因為m這個指針還沒有初始化,因此他沒有內存空間,自然就不存在有val這個參數。正確打開方式:


   
   
  
  
          
  1. void test3(){
  2. My *m;
  3. m = new My( 3);
  4. m->val = 4;
  5. cout<<m->val<< endl;
  6. }

以上代碼用new申請了內存空間。問題即可解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM