【C语言学习】国嵌21__指针基础
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
一、指針基礎(chǔ)
變量只是一段存儲(chǔ)空間的別名,那么是不是必須通過這個(gè)別名才可以使用這段存儲(chǔ)空間?答案是否定的。我們還可以通過指針也就是地址的方式來訪問某段存儲(chǔ)空間。
#include?<stdio.h>int?main() {int?i?=?5;int*?p?=?&i;printf("%d,?%08X\n",?i,?p);*p?=?10;printf("%d,?%08X\n",?i,?p);return?0; }運(yùn)行結(jié)果:
5, 0022FF48
10, 0022FF48
2、指針的本質(zhì)
# 指針在本質(zhì)上也是一個(gè)變量
# 指針需要占用一定的內(nèi)存空間
# 指針用于保存內(nèi)存地址的值
不同類型的指針占用內(nèi)存空間的大小相同。
#include?<stdio.h>int?main() {int?i;int*?pI;char*?pC;float*?pF;pI?=?&i;*((int?*)0x22ff4c)?=?100;?printf("%0X,?%0X,?%d\n",?pI,?&i,?i);printf("%d,?%d,?%0X\n",?sizeof(int*),?sizeof(pI),?&pI);printf("%d,?%d,?%0X\n",?sizeof(char*),?sizeof(pC),?&pC);printf("%d,?%d,?%0X\n",?sizeof(float*),?sizeof(pF),?&pF);return?0; }運(yùn)行結(jié)果:
22FF4C, 22FF4C, 100
4, 4, 22FF48
4, 4, 22FF44
4, 4, 22FF40
程序?qū)崿F(xiàn)的功能:1、指針占用的內(nèi)存空間2、指針的地址3、通過*號寫內(nèi)存
*號的意義
# 在指針聲明時(shí),*號表示所聲明的變量為指針
# 在指針使用時(shí),*號表示取指針?biāo)赶虻膬?nèi)存空間中的值。*號類似一把鑰匙,通過這把鑰匙可以打開內(nèi)存,讀取內(nèi)存中的值
# “*”還代表乘號
3、傳值調(diào)用與傳址調(diào)用
# 指針是變量,因此可以聲明指針參數(shù)
# 當(dāng)一個(gè)函數(shù)內(nèi)部需要改變實(shí)參的值,則需要使用指針參數(shù)
# 函數(shù)調(diào)用時(shí)實(shí)參值將復(fù)制到形參
# 指針適用于復(fù)雜數(shù)據(jù)類型作為參數(shù)的函數(shù)中
利用指針實(shí)現(xiàn)變量交換函數(shù):
#include?<stdio.h>#define?SWAP(a,?b)?{int?t?=?a;?a?=?b;?b?=?t;}?//宏定義也可以實(shí)現(xiàn)變量交換void?swap(int?*a,?int?*b)?//函數(shù)定義實(shí)現(xiàn)變量交換 { int?t?=?*a; *a?=?*b; *b?=?t; }int?main() { int?i?=?1;? int?j?=?9;printf("%d,?%d?\n",?i,?j);swap(&i,?&j);printf("%d,?%d\n",?i,?j);return?0; }4、常量與指針
# const int *p; ? ? ? //p可變,p指向的內(nèi)容不可變
# int const *p; ? ? ? //p可變,p指向的內(nèi)容不可變
# int *const p; ? ??/p不可變,p指向的內(nèi)容可變
# const int * const p;? //p和p指向的內(nèi)容都不可變
記憶口訣:左數(shù)右指
當(dāng)const出現(xiàn)在*號左邊時(shí)指針指向的數(shù)據(jù)為常量,當(dāng)const出現(xiàn)在*后右邊時(shí)指針本身為常量
指針小結(jié):
# 指針是C語言中一種特別的變量
# 指針?biāo)4娴闹凳莾?nèi)存的地址
# 可以通過指針修改內(nèi)存中的任意地址內(nèi)容
轉(zhuǎn)載于:https://my.oschina.net/u/141132/blog/265535
總結(jié)
以上是生活随笔為你收集整理的【C语言学习】国嵌21__指针基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PowerDesigner(16.1)使
- 下一篇: scp报错:not a regular