指針簡述

  1. 間接訪問:通過內存單元編號((地址),以及數據所佔字節數訪問內存中的數據.  

  2. 主要內容:指針變量指針與數組,指針與字符串  

  3. 數據的存儲:  

  4. 其中字節是最小的存儲單元,一個字節稱爲一個存儲單元(內存單元),不同數據類型所佔的存儲空間不等  

  5. 爲了正確的訪問內存單元,每個內存單元都有一個編號.內存單元的編號稱爲地址  

  6. 內存單元的數據是今天得重點內容  

  7. 訪問方式:  

  8. 直接訪問和間接訪問  

  9. 直接訪問:  

  10. 直接訪問內存空間的內容 例如 :a = 20;b = 2 * a;  

  11. 間接訪問:  

  12. 通過內存單元編號以及數據所佔字節數訪問內存中的數據  

  13. 間接訪問在程序中隨處可見,指針是間接訪問的常用方式.  

  14. 1.指針:  

  15. 指針是內存中的數據的內存編號  

  16. 程序中的每個數據都有地址  

  17. 通過&符號取變量的地址,例如:a = 20; printf(“%p”, &a);//打印內存地址  

  18. 指針變量  

  19. 指針變量是C語言中存放內存編號的量.  

  20. 指針變量的定義:  

  21. int *p =NULL;//NULL恆等於0  

  22. 與普通變量不同的是.定義指針變量的時候.前面需要加*  

  23. 指針變量的類型修飾符表示:該指針變量保存的指針對應的存儲區域是一個整形(或者其他類型)的存儲區域.這裏指針變量有別於普通變量所以變量名前加一個*來區分  

  24. 使用*操作符,訪問內存編號裏面對應的內容  

  25. int a = 5;  

  26. int *p = NULL;  

  27. p = &a;  

  28. printf(“%d”, *p);  

  29. 指針變量是存放數組的變量  

  30. *和&配套使用  

  31. *是取值運算符,可以通過*+變量名的形式訪問指針變量存儲的指針對應的存儲空間的內容  

  32. &p 指針p本身的地址  

  33. 指針的重指向  

  34. int a = 3, b = 5;  

  35. int *p = &a;  

  36. p = &b;  

  37. *p = 5;  

  38. //指針變量的賦值意味着重指向  

  39. 指針變量的重指向,本身就是對指針變量做重新賦值的操作,因爲指針變量並不脫離變量的範疇,在程序序運行期間可以對一個已經定義的指針變量做重新賦值,讓它保存另一個存儲空間的地址,這時候之前所做保存的地址就會被覆蓋掉  

  40. 2.指針的類型  

  41. 指針變量是存放內存地址的變量  

  42. 因爲內存地址只跟操作系統有關,所以指針變量所佔的內存大小取決於操作系統位數(32位系統指針佔四個字節)  

  43. 不同類型的指針區別:主要作用 指針自增運算,指針移動字節數多少,以及用*取值時,取多少字節數據.  

  44. 注意事項:  

  45. int *p = NULL;此時的*只起到修飾的作用,告訴編譯器,p是個指針.  

  46. 數組  

  47. 在C語言中,數組是構造類型,系統會分配一段連續空間來存儲數組的全部數據,數組名代表數組元素的首地址(第一個元素的內存地址)  

  48. 3.指針與數組  

  49. .指針可以當數組名使用  

  50. p[1] = 3;  

  51. 恆等於 a[1];  

  52. 恆等於*(p + 1);  

  53. 恆等於*(a + 1);  

  54. (1)所佔空間不同  

  55. 指針所佔空間至於操作系統位數有關  

  56. 數組所佔空間與元素個數有關,數據類型有關  

  57. (2)數組名是常量地址  

  58. 數組名不能重指向(不能賦值)  

  59. 指針可以重定向  

  60. 4.指針與字符串  

  61. C語言用字符數組保存字符串;  

  62. 指針數組  

  63. 存放指針的數組稱爲指針數組.  

  64. 注意可以通過指針來修改字符數組,但不可以修改常量字符串.<span style="font-size:18px;">  

  65. </span></span></h2> 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章