C语言指针总结
C語言指針總結
百度百科:{
1、“指針”是概念,“指針變量”是具體實現。指針也是一個變量,所以需要我們進行定義,而對于指針的定義,與一般變量一樣。
2、一個變量的(內存)地址稱為該變量的“指針”,通過指針能找到以它為地址的內存單元。而指針變量是用來存放另一個變量的地址的(即指針)。
3、指針和指針變量是兩個不同的概念,但要注意的是,通常我們敘述時會把指針變量簡稱為指針,實際他們含義并不一樣。
}
我們所用的函數,變量,常量,在計算機中得存在內存里,指針就是存它的位置的“坐標“(地址)(地址是個數,):0x20393032之類的
而指針變量就是一個內容物為地址(指針)(“坐標“)的變量,跟平時的 int
i,char c ,double d,float f 在本質上沒有區別
指針變量所指首地址與步長
指針變量需要定義類型,因為這樣更方便我們使用,
(可以同時規定其讀取規則與移動距離)
如果定義指針變量時不需要定義所指類型,我們可能在用的語法:
指針與指針變量的取值取址
*,&,可以簡單的理解成對于一個數,字符,函數,取了多少次地址,就得取多少次值才能變回來(其實不是所有一次又一次取址的啦)
指針與二維數組與N維數組
與上述概念相通,對于一個二維數組,我們定義其數組名為指針變量,值為首地址,而其取值后,變成在y軸上移動的一個指針(也可理解為步長為x軸定義域的指針,也可理解為一個指向一維數組的指針(值為一維數組首地址,對其取值結果為一維數組首元素))
即對于a【5】【6】:
有*(a+i)=a【i】(在二維數組中a【0】,a【1】……………. 分別指其所對應一維數組首地址)
有*(*(a+i)+j)==a【i】【j】
指針做函數參數
指針變量中存的是一個地址,地址是個數,那自然可以將地址作為參數傳入函數:
定義(聲明):
Void jijiji (int *p , int p[][5]
, int **p )
{
}
指針做函數返回值
在函數的學習中,我們知道:在定義一個函數時,需要確定其類型(即返回值類型),因為在函數調用時,語法的關系,使得函數看上去就像是一個變量(實在想不明白就這么理解吧TAT,至少能記住Orz){
I+=ppp(I,j,p);
Print(ppp(i),sda());
}
那么當函數返回指針類型時,必然會對其進行定義,這時還是把它(函數)當成個普通變量就好
Eg:
{返回int指針的 一個指向int的指針變量
Int
- test() int * tets;
{
}
完全一致(滑稽)
}
指針變量存取自定義空間指針(地址)
(舉個栗子叭,我喜歡calloc)
原型
: void *calloc(size_t n,
size_t size);
Eg:
Calloc(10,sizeof(int)*20);
返回一個10*20 的空間的
首地址,
(int*)Calloc(10,sizeof(int)*20);
強制轉換成int類型(將讀取規則強制改變)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: flanneld 安装
- 下一篇: 丑憨批的Transformer笔记