C/C++ 指標和雙重指標以及三重指標 - Follow Fang!

文章推薦指數: 80 %
投票人數:10人

C/C++ 指標和雙重指標以及三重指標. 指標在C語言內是一個很重要的元素,指標可以指到任何的位置,不過要小心使用,能指到記憶體位置,就代表可以透過 ... 2013/08/28 C/C++指標和雙重指標以及三重指標 指標在C語言內是一個很重要的元素,指標可以指到任何的位置,不過要小心使用,能指到記憶體位置,就代表可以透過指標去取得資料以及處理資料 不過有些方法也可以透過指標處理得很乾淨,例如Swap 在這邊我大概把之前學得,指標和雙重指標以及三重指標大概寫上來,以免哪天忘記 指標顧名思義就是指標 指標的宣告方式就是在變數前頭加上*,例如: int*ptr; int*ptr; 將變數加上&可取得到記憶體位置,例如: intnum=100; int*ptr=# 以上面的例子來說,ptr就是指向num所在的記憶體位置,但ptr也會佔有相同大小的記憶體位置 ptr->num 雙重指標也只是紀錄著指標以及指標指到的位置,例如: intnum=100; int*ptr=# int**ptr2=&ptr; ptr2->ptr->&num 三重指標也只是記錄著雙重指標內的位置,例如: intnum=100; int*ptr=# int**ptr2=&ptr; int***ptr3=&ptr2; ptr3->ptr2->ptr->&num 範例: #include #include intmain() { intnum=100; int*ptr=# int**ptr2=&ptr; int***ptr3=&ptr2; printf("num的值\t%d\n",num); printf("num的位址\t%p\n",&num); printf("透過ptr取得到值\t%d\n",*ptr); printf("ptr指到num的位址\t%p\n",ptr); printf("ptr記憶體位址\t%p\n\n\n",&ptr); printf("透過ptr2取得到num值\t%d\n",**ptr2); printf("ptr2指到ptr位址\t%p\n",*ptr2); printf("ptr2指到ptr的記憶體位置\t%p\n",ptr2); printf("ptr2記憶體位址\t%p\n\n\n",&ptr2); printf("透過ptr3取得到num值\t%d\n",***ptr3); printf("ptr3指到ptr位址\t%p\n",**ptr3); printf("ptr3指到ptr的記憶體位置\t%p\n",*ptr3); printf("ptr3指到ptr2的記憶體位置\t%p\n",ptr3); printf("ptr3記憶體位址\t%p\n\n\n",&ptr3); system("pause"); return1; } 執行結果: 用指標時切記要小心指到不該指的,雖然方便,不過在學習上當然還是會很抽象 有錯麻煩大神糾正,謝謝 參考資料: http://www.slideshare.net/shademoon/08-3475335 http://blog.sina.com.tw/erzengel/article.php?pbgid=115834&entryid=613476 http://openhome.cc/Gossip/CGossip/DoublePointer.html http://pydoing.blogspot.tw/2010/09/c-ch0611.html http://nknucc.nknu.edu.tw/~jwu/c/cpgch4.htm http://www.eskimo.com/~scs/cclass/int/sx8.html http://stackoverflow.com/questions/5814646/c-double-pointer http://nknucc.nknu.edu.tw/~jwu/c/cpgch4.htm 圖片資料: http://ezgo.coa.gov.tw/graph/spots/H_CHINHUA_20081104173334/H_CHINHUA_20081104173334_general_000004s2.jpg 於 8月28,2013 以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest 標籤: C, C++ 沒有留言: 張貼留言 較新的文章 較舊的文章 首頁 訂閱: 張貼留言(Atom) 標籤 .NetCore 上課心得 英文 食記 留學 開箱 黑蘋果 當兵這回事 經歷 腦立方 演算法 聚會心得 線性代數 ActiveDirectory Adobe AJAX Android AndroidStudio AngularJS Apache Architecture Arduino ASP.Net ASP.NETCore AWS Batch BingMapsAPI BIOS BootCamp Bootstrap C C#.Net C++ CentOS CertBot Cisco Corel Corsair CSS cygwin D3.js Datastructure DataGrip Debug DHCP Django DNS Docker Dropbox Drupal EmguCV Estinet Facebook Fedora FirefoxOS FreeBSD Ftp Git Go GoogleAppsScript GoogleChartAPI GoogleChromeExtensionsAPI GoogleContact GoogleForm GoogleMapsAPI Hackpad Haskell Heroku HRV HTML5 Hyper-V IOS iPhone iReport iTunes Java JavaEE JavaFX JavaScript Jenkins JetBrains jQuery JSP Juniper KINECT Laravel LINQ Linux MANP Matlab Maven MFC MicrosoftOffice mininet Mint MQTT MySQL NAS NDK ndk-build Network NextCloud Nginx Node.js Nuget Object-C OpenCart OpenCV OpenData OpenFlow OpenGL OpenKM OpenWRT OSX PHP PhpStorm PostgreSQL PowerShell Python RaspberryPi Razor React.js Redis RoS-BOT RouterOS Ruby Snap SocialAPI SolidWorks SQLite SSL Stream SublimeText Swift Synology Testing Tomcat Tools Ubuntu UEFI UML UVa VC VisualStudio VisualStudioCode VMware Vue.js W7 WarGame WinAPI Windows Windows10 Windows10IoTCore WindowsAPI WindowsPhone7 WordPress WPF Xcode XNA YAML Youtube YQL Zabbix 熱門文章 C#.Net使用Chart繪製折線圖 先在工具箱找到Chart,拖曳至表單上並將預設的序列刪除程式碼:usingSystem;usingSystem.Drawing;usingSystem.Windows.Forms;usingSystem.Windows.Forms.DataVisu... 透過JavaScript讓HTML頁面互相傳值 最近在想如何將值傳遞到另一個網頁,大二有學過用PHPPost以及Get方式去傳遞不過想嘗試用JavaScript傳遞,就上網找了一下方法參考『在HTML頁面之間傳遞參數』文章,是透過JavaScript去分析網址內的內容,將內容的值取出來我以該篇文章作為基礎,... warning :找不到v142的建置工具 昨天幫學弟寫了C++的功課,傳給他之後跟開不起來昨天剛好在更新VS2019的更新,讓VS無法找到V142的建置工具,所導致的首先對專案按右鍵,屬性將平台工具組從V142改為其他的,按下確定 線性代數高斯消去法高斯-喬丹消去法 為了考碩士,去旁聽電通系張偉德老師的線性代數他在課堂上解聯立方程式是一步一步的解,讓連我這種健忘的人也能學會用的是國中方式一條線有無限多個點,當兩條線有一點交集則有一組解 C#.Net使用Chart繪製長條圖 程式碼:usingSystem;usingSystem.Drawing;usingSystem.Windows.Forms;usingSystem.Windows.Forms.DataVisualization.Charting;namespaceSam... 聯絡我?



請為這篇文章評分?