深入了解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語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
c++中的volatile和variant關(guān)鍵字詳解
大家好,本篇文章主要講的是c++中的volatile和variant關(guān)鍵字詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
C++圖論之Bellman-Ford算法和SPFA算法的實(shí)現(xiàn)
貝爾曼-福特算法(Bellman-Ford)是由理查德·貝爾曼和萊斯特·福特創(chuàng)立的,求解單源最短路徑問題的一種算法。SPFA 算法是 Bellman-Ford算法 的隊(duì)列優(yōu)化算法的別稱,通常用于求含負(fù)權(quán)邊的單源最短路徑。本文將詳解兩個(gè)算法的實(shí)現(xiàn),需要的可以參考一下2022-06-06
c++ minicsv庫(kù)的編譯錯(cuò)誤與解決方案
有一個(gè)項(xiàng)目需要寫csv文件以呈現(xiàn)數(shù)據(jù)。Github上有一個(gè)關(guān)于csv的輕量級(jí)讀寫庫(kù)minicsv,于是下載之。但是編譯example時(shí)出現(xiàn)了以下問題2016-11-11
C++?OpenCV實(shí)戰(zhàn)之車道檢測(cè)
這篇文章主要介紹了基于C++?OpenCV實(shí)現(xiàn)的車道檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

