歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 指針基礎和總結

指針基礎和總結

日期:2017/3/1 9:12:57   编辑:Linux編程

1. 數組中的第一個存儲區的地址加上下標可以得到下標對應的存儲區的地址

2. 例如計算機處理數組的方式是 arr[4]- (*arr+4) 得到該存儲區的內容

3. 數組和指針的區別

數組名稱不可以賦值,代表的是存儲區的首地址 不可以賦值。但是指針變量可以賦值。

對他們做sizeof 計算結果不同,對數組名稱做計算代表數組的

含有的存儲區的個數。而所有的指針進行的操作結果是 4

對他們進行取地址操作,結果不同。對數組名稱取地址會變成二維數組 對指針取地址,和指向的內容沒有關系

可以使用指針做循環變量依次操作數組裡面的每個存儲區

4 指針 可以跨函數使用存儲區。因為指針變量記錄的地址。只要和他進行捆綁就可以操作對應的存儲區的內容。所有的函數只要訪問這個地址,就會對這個存儲區訪問,實現跨函數訪問存儲區。靜態局部變量和數組實際上都是指針的方式跨函數使用存儲區。

5 使用指針類型的返回值可以讓函數使用另外一個函數內部的靜態局部變量

6 總之 只有指針能夠跨函數使用存儲區,跨函數使用存儲區一定要遵守生命周期的規則,使用的方式就是指針類型的形式參數和指針類型的返回值,

7 聲明指針變量的時候可以使用const 關鍵字 表示某一個存儲區的內容不能修改,const 寫在類型的名稱前表示不可以對指針捆綁區進行賦值,也就是成了只讀的指針存儲區。只是不可以賦值,別的操作還是可以。跨函數 使用存儲區時候如果指針的擁有者不希望別的函數修改自己的存儲區 的內容 就用這個關鍵字進行聲明 ,當函數跨函數使用存儲區時候盡量在聲明時候 加上這個關鍵字。如果聲明指針吧const關鍵字加在名稱前面表示不能對指針本身的存儲區進行賦值。

8 可以在聲明指針時候在*前面 使用void 無類型指針 可以和任意類型的指針 進行捆綁,不能通過指針類型得知存儲區的類型。不能在無類型指針前面加* 。不能對無類型指針進行加減計算,無類型指針要首先強制類型轉換為有類型指 針才能使用。無類型指針通常作為函數的形式參數使用,開始時候我覺得這個沒用,後來才發現這個的神作用,現在的我還是初學者,但是我在別的開源函數見過這種的用法。

這種定義方法可以使得一個函數變得更加通用。只需要將指針變量強制轉換成需要的類型,就可以將不同類型的實際參數賦值給形式參數。請記住這個強制轉換的樣子,不要以後都不記得。

9 總結下來,我覺得指針是伴隨著函數的產生而產生的,函數的利用讓我們不能隨便的對定義的變量進行操作。因為函數的存在使得變量有了作用域,分為局部變量和全局變量。但是指針可以無視作用域,他只是受到聲明周期的限制但是不會受到作用域的限制。任何函數只要對這片存儲區進行了操作。存儲區的內容就發生了改變。一般跨函數的使用指針變量是通過指針做形式參數和指針做返回值來實現的。

Copyright © Linux教程網 All Rights Reserved