很多初學(xué)者會發(fā)出這樣的感慨:我C語言中其它的知識都學(xué)得可以,唯獨指針搞不懂。如果是這樣,我可以很負(fù)責(zé)的告訴你,對于這門編程語言,你等于是沒學(xué)。所以學(xué)好指針對于初學(xué)者是非常重要的?;蛟S你會覺得它有點抽象,但是當(dāng)你徹底理解了指針的含義,你會發(fā)現(xiàn)指針用起來特別方便。
今天我就很膚淺的說一下指針的幾種用法:
1、指針指向變量:
下面有這樣一個代碼塊:
int main()
{int a=10;int b=15;test(a,b);printf("a=%d,b=%d ",a,b);}
void test(int x,int y)
{int tmp;tmp=x;x=y;y=tmp;}
最后輸出的結(jié)果還是a=10,b=15。因為在函數(shù)調(diào)用時,實參和形參之間只是值傳遞。但我們使用指針結(jié)果就不一樣了,如:
int main()
{int a=10;int b=15;test(&a,&b);printf("a=%d,b=%d ",a,b);return 0;}
void test(int * x,int *y)
{int tmp;tmp=*x;*x=*y;*y=tmp;}
輸出結(jié)果a=15,b=10。變量a和b的值發(fā)生了交換。這是因為我們利用指針訪問變量的存儲單元,間接修改變量的值。
2、指針指向數(shù)組:
定義一個數(shù)組并初始化,int array[5]={2,5,12,7,8},定義一個指針變量并把數(shù)組的地址賦給它,int *p=array,注意數(shù)組名就是數(shù)組的地址,而且數(shù)組的地址就是首元素的地址。因此我們的指針變量就指向了數(shù)組的首元素,*p=2。如果把(p+1),那么指針變量就指向了數(shù)組的下一個元素5,因此我們可以利用指針來遍歷數(shù)組的各個元素:
int main()
{int array[5]={2,5,12,7,8};int *p =array;for(int i=0;i<5;i++){printf("array[%d]=%d ",i,*(p+i));}return 0;}
3、指針指向字符串:
我們都知道用數(shù)組存儲字符串,如char name[20]="jack",上面已經(jīng)簡單講述了指針指向數(shù)組,所以我們可以這樣做,char *name="jack",指針變量指向字符串的首個字符并可以依次訪問字符串的各個字符。
4,指針指向函數(shù):
我們需要知道怎樣表示一個指針指向函數(shù),說白了就是語法要正確,下面我也取一個代碼塊來說明一下:
int sum(int x,int y)
{return x+y;}
int main()
{int a=5;int b=6;int (*p)(int,int);p=sum;int result=(*p)(a,b);printf("The result is %d ",result);return 0;}
不難發(fā)現(xiàn)上面代碼塊里語句(*p)(a,b)可以用p(a,b)來代替,因為p和sum就是一樣的,只是用前者可能更容易理解一點。而我們要知道怎樣定義一個指針指向函數(shù),int (*p)(int,int)這是固定寫法,前面的int是指針將來指向的函數(shù)的返回值的類型,如果沒有函數(shù)返回值,那就是void,后面括號里的兩個int 當(dāng)然就是指針將指向的函數(shù)的形參。指針指向函數(shù)用起來確實有點抽象,要想熟練運用的話就多去做一些這方面的練習(xí)吧!
5,指針指向結(jié)構(gòu)體:
我們首先首先定義一個結(jié)構(gòu)類型,
struct student
{
char *name;
int ages;
};
再根據(jù)類型定義結(jié)構(gòu)體變量 struct student stu={"Rose",15};定義一個指針指向結(jié)構(gòu)體類型,struct student *p;把結(jié)構(gòu)體變量stu的地址賦給指針變量p,p=&stu;我們可以有3種方式來訪問結(jié)構(gòu)體中的屬性ages:
stu.ages=15;(*p).ages=15;p->ages=15;不過第三種方式在C語言中只能用來指向結(jié)構(gòu)體。
綜上所述,指針的基本用法就是這幾種,還有些用法不常見的小編在此就一一例舉了,有興趣的話可以去翻閱相關(guān)的資料。
-
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136683 -
指針
+關(guān)注
關(guān)注
1文章
480瀏覽量
70551
原文標(biāo)題:C語言中指針的幾種用法
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論