C語言中指針的基本用法分析

1、指針指向變量:

  下面有這樣一個代碼塊:

  int?main()

  {int?a=10;int?b=15;test(a,b);printf("a=%d,b=%d\n",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\n",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\n",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\n",result);return?0;}

  不難發(fā)現(xiàn)上面代碼塊里語句(*p)(a,b)可以用p(a,b)來代替,因為p和sum就是一樣的,只是用前者可能更容易理解一點。而我們要知道怎樣定義一個指針指向函數(shù),int? (*p)(int,int)這是固定寫法,前面的int是指針將來指向的函數(shù)的返回值的類型,如果沒有函數(shù)返回值,那就是void,后面括號里的兩個int? 當然就是指針將指向的函數(shù)的形參。指針指向函數(shù)用起來確實有點抽象,要想熟練運用的話就多去做一些這方面的練習吧!

  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語言-指針學習資料

指針

http://www.makeru.com.cn/live/1392_238.html?s=156461?

指針換裝你還認識嗎

http://www.makeru.com.cn/live/5413_2043.html?s=156461?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容