RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

GReq_mcu168 ? 2018-01-09 15:12 ? 次閱讀

很多初學(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)的資料

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136683
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    480

    瀏覽量

    70551

原文標(biāo)題:C語言中指針的幾種用法

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言中指針變量的使用

      在使用時,一定要注意上面“*“號的用法差異。還需要注意的是,一個指針變量只能指向與其數(shù)據(jù)類型相同的變量。
    發(fā)表于 08-15 15:12 ?2103次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中指針</b>變量的使用

    C語言中指針的定義

    上一節(jié)中,我們利用了一個小知識來介紹了一下指針,在上面這個例子中,小明和小麗手中的這個杯子就好比我們C語言中的變量,它確實是實實在在存放一些有具體意義的數(shù)據(jù)。這個杯套就類似于C
    發(fā)表于 08-15 16:24 ?1816次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中指針</b>的定義

    C語言中指針的命令行參數(shù)

    指針C語言最重要也是最難理解的部分,它在我們平時的工作中無處不在。
    的頭像 發(fā)表于 09-26 10:18 ?1147次閱讀

    C語言中void指針的基本認(rèn)識及典型應(yīng)用

    C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種類型*類型的。
    發(fā)表于 02-01 09:26 ?1097次閱讀

    C語言中指針函數(shù)和函數(shù)指針的概念及應(yīng)用示例

    C語言中,指針函數(shù)和函數(shù)指針是強(qiáng)大且常用的工具。它們允許我們以更靈活的方式處理函數(shù)和數(shù)據(jù),進(jìn)而擴(kuò)展程序的功能。
    發(fā)表于 08-16 16:14 ?856次閱讀

    C語言中多級指針的概念和使用方法

    多級指針C語言中是一種特殊的指針類型,它可以指向其他指針指針。
    發(fā)表于 08-16 16:16 ?1075次閱讀

    C語言中指針的基本概念和用法

    C語言中,指針是一項重要的概念,它允許我們直接訪問和操作內(nèi)存地址。
    發(fā)表于 08-17 15:30 ?756次閱讀

    談?wù)?b class='flag-5'>C語言中指針有什么好處,請各位高手們談?wù)勛约旱捏w會

    談?wù)?b class='flag-5'>C語言中指針有什么好處,請各位高手們談?wù)勛约旱捏w會...
    發(fā)表于 09-01 17:38

    語言中指針的介紹

    的內(nèi)容。在C語言中, 允許用一個變量來存放指針,這種變量稱為指針變量。因此,一個指針變量的值就是某個內(nèi)存單元的地址或稱為某內(nèi)存單元的指針。圖
    發(fā)表于 09-10 14:22

    C語言中指針是什么?如何規(guī)避野指針

    C語言中指針是什么?有哪幾種類型?指針有何作用?如何規(guī)避野指針?
    發(fā)表于 02-25 06:47

    C語言中指針的介紹非常詳細(xì)

    C語言中指針的介紹非常詳細(xì) C語言中指針的介紹非常詳細(xì)
    發(fā)表于 12-25 10:39 ?57次下載

    C語言中指針(重點)超詳細(xì)

    C語言中指針1、指針是什么2、指針指針類型2.1、指針
    發(fā)表于 01-13 14:10 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的<b class='flag-5'>指針</b>(重點)超詳細(xì)

    C語言進(jìn)階】C語言指針的高階用法

    C語言進(jìn)階】C語言指針的高階用法
    的頭像 發(fā)表于 08-31 13:24 ?2317次閱讀

    C語言中什么是指針數(shù)組

    C語言中一個數(shù)組,若其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組,也就是說,指針數(shù)組中的每一個元素都存放一個地址,相當(dāng)于一個
    的頭像 發(fā)表于 03-10 15:26 ?1745次閱讀

    簡述C語言中指針重點

    C語言中一個函數(shù)可以返回一個整型值、字符值、實型值等,也可以返回指針型的數(shù)據(jù),即地址,其概念與以前類似,只是返回的值的類型是指針類型。
    的頭像 發(fā)表于 03-10 15:28 ?598次閱讀
    RM新时代网站-首页