C語言簡明介紹指針的使用
1. 指針類型
指針以字節(jié)為單位;
指針類型決定了解引用時能訪問的空間的大小;也決定了指針的步長(指針+1走多遠)
2. 野指針
- 指針未初始化
- 指針越界訪問
- 指針指向的空間已釋放
int* test()
{
int a = 10;//野指針
return &a;
}
int main(){
int* p = test();
//test函數(shù)里的a是局部變量,出函數(shù)時,儲存變量的空間已經(jīng)還給操作系統(tǒng)了
printf("%d\n",*p);
//此時通過解引用不能再訪問到a;
}如何規(guī)避野指針呢?
- 指針初始化
- 小心指針越界
- 指針指向空間釋放即使置NULL
- 避免返回局部變量的地址
- 指針使用之前檢查有效性
3. 指針的運算
3.1 指針+-整數(shù)
int arr[5] = {0,1, 2, 3, 4};
int* p = arr;
int i = 0;
for(i=0; i<5; i++)
{
//printf("%d ",*p);
//p++;
printf("%d ",*p++);//以上兩種寫法相同
}3.2指針-指針
得到的是中間元素的個數(shù),可以用來求字符串的長度
int my_strlen(char* arr)
{
char* start = arr;
char* end = arr;
while(*end != '\0')
{
end++;
}
return end - start;
}3.3 指針的關(guān)系運算
其實就是指針比較大小。實際在絕大部分的編譯器上是可以順利完成任務的,然而我們還是應該避免這樣寫,因為標準并不保證它可行。
float values[5];
float *vp;
int i = 0;
for (vp = &values[0]; vp < &values[5];)
{
*vp++ = 0;
}4. 指針數(shù)組
存放指針的數(shù)組
int a; int b; int c;
int* arr[3] = {&a,&b,&c};到此這篇關(guān)于C語言簡明介紹指針的使用的文章就介紹到這了,更多相關(guān)C語言指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于C++靜態(tài)數(shù)據(jù)成員的實現(xiàn)講解
今天小編就為大家分享一篇關(guān)于關(guān)于C++靜態(tài)數(shù)據(jù)成員的實現(xiàn)講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
用位圖排序無重復數(shù)據(jù)集實例代碼(C++版)
本文講解如何用位圖排序無重復的數(shù)據(jù)集,我們使用C++實現(xiàn)一下這個方法2013-11-11
C程序?qū)崿F(xiàn)整數(shù)的素數(shù)和分解問題
這篇文章主要介紹了C程序?qū)崿F(xiàn)整數(shù)的素數(shù)和分解問題,對于算法的學習有不錯的借鑒價值,需要的朋友可以參考下2014-09-09
數(shù)據(jù)結(jié)構(gòu) 數(shù)組順序存儲詳細介紹
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 數(shù)組順序存儲詳細介紹的相關(guān)資料,需要的朋友可以參考下2017-05-05
c++中為什么可以通過指針或引用實現(xiàn)多態(tài)詳解
這篇文章主要給大家介紹了關(guān)于c++中為何可以通過指針或引用實現(xiàn)多態(tài),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04

