深入了解C語言指針
指針是什么?
總結(jié):指針就是個(gè)變量,變量里面是地址,指針就是地址。(存放在指針的值都被當(dāng)成地址處理)。
注:指針的大小在32位平臺(tái)是4個(gè)字節(jié),在64位平臺(tái)是8個(gè)字節(jié)。
指針和指針類型
通過前面的知識(shí)我們知道,變量有不同的類型,如:整形,浮點(diǎn)型等。
同理:指針也有不同的類型。
**指針的定義方式:
變量類型 + *
比如:
int * pi=NULL char * pc=NULL short * ps=NULL long *pl=NULL float *pf=NULL double *pd=NULL …
指針類型的意義?
指針±整數(shù)
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int n = 10; char *pc = (char*)&n; int *pi = &n; printf("n=%p\n", &n); printf("pc=%p\n", pc); printf("pi=%p\n", pi); printf("pc+1=%p\n", pc + 1); printf("pi+1=%p\n", pi + 1); return 0; }
總結(jié):指針的類型決定了指針向前或者向后走一步有多大(距離)。
指針的解引用
指針運(yùn)算
- 指針±整數(shù)
- 指針-指針
- 指針的關(guān)系運(yùn)算
注:指針相減前提,指向的地址相等
指針±整數(shù)
#define MAX 5 int arr[5]; int *p; //指針+-整數(shù) for(p=&arr[0] ;p<&a[MAX]; ) { *p++ =0; }
指針-指針
int my_strlen(char *s)//沒有指針減指針 { char *p = s; while (*p != '\0') p++; return p - s; }
指針的關(guān)系運(yùn)算
for (p = &arr[MAX]; p > &arr[0]) { *--p; }
標(biāo)準(zhǔn)規(guī)定:允許指向數(shù)組元素的指針與指向數(shù)組最后一個(gè)元素后面的那個(gè)內(nèi)存位置的指針比較,但是不允許與指向第一個(gè)元素之前的那個(gè)內(nèi)存位置的指針進(jìn)行比較。
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++中回調(diào)函數(shù)(CallBack)的用法分析
這篇文章主要介紹了C++中回調(diào)函數(shù)(CallBack)的用法,較為詳細(xì)的分析了C++中回調(diào)函數(shù)(CallBack)的原理并以實(shí)例形式總結(jié)了其具體用法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01Visual Studio2022+QT6創(chuàng)建桌面應(yīng)用實(shí)現(xiàn)
本文主要介紹了Visual Studio2022+QT6創(chuàng)建桌面應(yīng)用實(shí)現(xiàn),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02C語言實(shí)踐設(shè)計(jì)開發(fā)飛機(jī)游戲
飛機(jī)大戰(zhàn)想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用C語言寫一個(gè)簡單的飛機(jī)大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下2022-02-02原碼, 反碼與補(bǔ)碼基礎(chǔ)知識(shí)詳細(xì)介紹
這篇文章講解了計(jì)算機(jī)的原碼, 反碼和補(bǔ)碼. 并且進(jìn)行了深入探求了為何要使用反碼和補(bǔ)碼, 以及更進(jìn)一步的論證了為何可以用反碼, 補(bǔ)碼的加法計(jì)算原碼的減法,需要的朋友可以參考下2016-12-12C語言編程中借助pthreads庫進(jìn)行多線程編程的示例
這篇文章主要介紹了C語言編程中借助pthreads庫進(jìn)行多線程編程的示例,文中的示例環(huán)境為Windows系統(tǒng),需要的朋友可以參考下2015-11-11