亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語言程序設(shè)計中指針變量的關(guān)聯(lián)引用

        2021-03-07 07:17:54孫道層
        電子技術(shù)與軟件工程 2021年22期
        關(guān)鍵詞:關(guān)聯(lián)

        孫道層

        (德宏職業(yè)學(xué)院 云南省芒市 678400)

        1 研究的目的和意義

        C語言程序中涉及的數(shù)據(jù)都存放在計算機內(nèi)存中,計算機內(nèi)存按照編號進(jìn)行尋址,根據(jù)這個編號訪問相應(yīng)的內(nèi)存數(shù)據(jù),這個編號就是訪問內(nèi)存數(shù)據(jù)的地址,這個編號或者地址就是指針[1-2]。

        指針變量是指存儲的地址可以變化的變量,在計算機內(nèi)部存儲中,在計算機內(nèi)存中,同種類型的數(shù)據(jù)往往存儲在一塊連續(xù)的內(nèi)存區(qū)域,地址是常量,不能變化移動地訪問連續(xù)的內(nèi)存單元,指針變量通過指針的移動指向連續(xù)存儲區(qū)域的不同單元,表達(dá)方便明確,概念更加清晰,因此在C語言程序設(shè)計中得到廣泛的應(yīng)用[3-4]。

        廣義上來理解,C語言中只要對象有地址,都可以通過指針變量關(guān)聯(lián)這個對象,例如指針變量關(guān)聯(lián)字符串常量、普通基本類型變量、結(jié)構(gòu)體類型變量,還可以關(guān)聯(lián)數(shù)組、函數(shù)、文件等對象,貫徹C語言程序設(shè)計各個章節(jié)知識點,也在程序設(shè)計中發(fā)揮重要的作用,指針變量正確的使用能夠提高C語言程序代碼可讀性,提高程序的運行效率,不恰當(dāng)?shù)氖褂脮?dǎo)致代碼可讀性差,影響編譯執(zhí)行效率[5]。本文通過指針變量的概念界定、指針變量關(guān)聯(lián)對象的引用及注意事項,深入分析各類指針變量內(nèi)涵和使用場合,對學(xué)習(xí)者如何快捷系統(tǒng)全面學(xué)習(xí)指針變量具有借鑒意義,對從事面向過程C語言程序設(shè)計開發(fā)者如何正確有效使用各類指針變量提高程序代碼質(zhì)量具有實踐借鑒意義。

        2 基本類型變量的指針變量關(guān)聯(lián)引用

        一級指針變量對普通基本類型變量的關(guān)聯(lián)引用形式:*指針變量名;“*”表示該變量是指向普通基本類型變量的一級指針變量。關(guān)聯(lián)基本類型變量的二級指針變量定義形式:基本類型變量說明符**指針變量名,“**”有兩層含義,一方面表示該變量名屬于二級指針變量,另一方面表示該指針變量指向的對象是基本類型變量。

        例1 指針變量關(guān)聯(lián)引用基本類型變量

        #include “stdio.h”

        void main()

        { int c=5,*p1=&c,**p2=&p1;

        printf(“c=d% *p1=d% **p2=d% ”,c,*p1,**p2);

        }

        其中p1為一級指針變量,c前面關(guān)鍵字是int表示c為整型變量,把變量c的內(nèi)存地址賦值給指針變量p1,p1根據(jù)存放的地址指向整型變量c,*p1與c的值是同一對象,p1=&c,*p1=c;p2是二級指針變量,指向指針的指針,p2的內(nèi)容是一級指針變量p1的地址,*p2是指向指針變量p1,**p2是指向整型變量c,p2=&p1,*p2=p1,**p2=c。關(guān)系如圖1所示。

        圖1:指針變量對整型變量的引用

        3 字符串的指針變量關(guān)聯(lián)引用

        在C語言中字符串沒有變量,只有常量,可以通過指針變量關(guān)聯(lián)指向字符串常量,指針變量的移動來訪問移動后的指針變量指向的字符元素,指針變量關(guān)聯(lián)字符串的定義形式:

        字符類型標(biāo)識符* 字符串指針變量名;

        例2指針變量關(guān)聯(lián)引用字符串

        #include “stdio.h”

        void main()

        { char *p= “string”;

        puts(p+3);

        }

        p是字符指針變量,并將字符串常量”string”首個元素地址賦值給p,p+3表示從首個元素開始向后推移三個元素移動后的地址,即指向‘i’這個元素,輸出的結(jié)果是“ing”。關(guān)系如圖2所示。

        圖2:指針變量對字符串常量的引用

        4 數(shù)組的指針變量關(guān)聯(lián)引用

        4.1 一維數(shù)組的指針變量關(guān)聯(lián)引用

        一維數(shù)組是由一個下標(biāo)從零開始排列的同類型變量組成結(jié)構(gòu)單一的集合,一維數(shù)組在計算機內(nèi)部存儲空間是一片連續(xù)的區(qū)域,把這片連續(xù)區(qū)域的首地址賦值給指針變量,就可以通過指針變量引用一維數(shù)組元素。一維數(shù)組指針變量的定義一般形式:

        一維數(shù)組類型說明符*指針變量名;

        指針變量關(guān)聯(lián)引用一維數(shù)組元素一般形式:

        *(指針變量+表達(dá)式),表達(dá)式一般是算術(shù)表達(dá)式,在一維數(shù)組就是指元素的所在連續(xù)單元的標(biāo)號。

        例3 指針變量關(guān)聯(lián)引用一維數(shù)組元素

        #include “stdio.h”

        void main()

        { inti,a[6]={1,2,3,4,5,6};

        Int *p=a;

        for(i=0;i<6;i++)

        printf(“%d ”,*(p+i));

        printf(“ ”);

        }

        定義一個指針并把數(shù)組名a賦值指針變量p,指針變量p指向數(shù)組首個元素a[0],*(p+i)表示一維數(shù)組第i個元素,也可以表示為p[i],通過for循環(huán)語句執(zhí)行6次,分別輸出數(shù)組元素的值。如圖3所示。

        圖3:使用指針變量指向一維數(shù)組

        4.2 二維數(shù)組的指針變量關(guān)聯(lián)引用

        二位數(shù)組由一維數(shù)組嵌套構(gòu)成的,可以將每一行看成一個一維數(shù)組,若有定義:int c[2][3],把c當(dāng)成由c[0]和c[1]兩個元素組成一維數(shù)組,c[0]和c[1]里面的元素分別又組成一個一維數(shù)組。如圖4所示。

        圖4:使用指針指向二維數(shù)組

        二維數(shù)組指針變量對二維數(shù)組元素的關(guān)聯(lián)引用形式:*(*(指針變量名+行表達(dá)式)+列表達(dá)式);

        例4指針變量對二維數(shù)組的關(guān)聯(lián)引用

        #include “stdio.h”

        void main()

        { intm,n,c[2][3]={1,2,3,4,5,6};

        int **q=c;

        for(m=0;m<2;m++)

        for(n=0;n<3;n++)

        printf(“%d”,*(*(q+m)+n));

        printf(“ ”);

        }

        *(q+m)+n表示c[m][n]元素的地址即&c[m][n],*(*(q+m)+n)表示前面相應(yīng)地址所指向的元素即c[m][n]。

        5 函數(shù)的指針變量關(guān)聯(lián)引用

        定義函數(shù)就需要計算機內(nèi)部存儲區(qū)域分配相應(yīng)的存儲空間給函數(shù),并把這個已經(jīng)分配的存儲空間的地址賦值指針變量,該指針變量就指向已經(jīng)定義的函數(shù),把某一個函數(shù)的入口地址賦值給指針變量,該指針變量就可以對指向的函數(shù)進(jìn)行調(diào)用,

        函數(shù)指針變量關(guān)聯(lián)引用函數(shù)的一般形式:(*指針變量名)(實參表);

        例5指針變量對函數(shù)的關(guān)聯(lián)引用

        #include “stdio.h”

        int min(int,int);

        void main()

        { int (*p) (int,int);

        inta,b;

        int m;

        scanf(“%d,%d”,&a,&b);

        p=min;

        m=(*p) (a,b);

        printf(“m=%d ”,m);

        }

        int min (intc,int d)

        { int n;

        n=(c<=d)? c:d;

        return (n);

        }

        6 結(jié)構(gòu)體的指針變量關(guān)聯(lián)引用

        結(jié)構(gòu)體變量定義之后,在計算機內(nèi)存中會分配一塊連續(xù)的存儲區(qū)用來存儲結(jié)構(gòu)體變量里的各個成員數(shù)據(jù),這塊連續(xù)存儲首地址就是單元首個元素的地址,也是該結(jié)構(gòu)體變量的地址,把這塊連續(xù)的存儲區(qū)域地址賦值給指針變量,指針變量就可以調(diào)用此結(jié)構(gòu)體變量成員。

        聲明結(jié)構(gòu)體類型指針變量的形式:struct結(jié)構(gòu)體類型名* 結(jié)構(gòu)體指針變量名;

        結(jié)構(gòu)體指針變量關(guān)聯(lián)引用結(jié)構(gòu)體變量形式:指針變量名->成員名或(*指針變量名).成員名;

        例6結(jié)構(gòu)體指針變量關(guān)聯(lián)引用結(jié)構(gòu)體變量

        #include <stdio.h>

        struct student

        { longstudent_num;

        charstudent_name[10];

        charstudent_sex;

        intstudent_age;

        };

        Void main()

        { structstudent stu = {“20131104”,“zhangsan”,‘男’,20},*p=&stu;

        printf(“student_name:%s,student_age:%d ”,

        (*p).student_name,p->student_age);

        }

        例6中,把結(jié)構(gòu)體變量stu的地址賦值給指針變量p,可以用指針變量p引用變量stu的成員,此時(*p).student_name表示引用結(jié)構(gòu)體變量stu的name成員,p->student_age表示引用結(jié)構(gòu)體變量stu的age成員。

        7 文件的指針變量關(guān)聯(lián)引用

        通過文件指針將數(shù)據(jù)流與特定的文件進(jìn)行關(guān)聯(lián),文件指針是一個FILE類型的文件結(jié)構(gòu)體指針變量,指針變量可以實現(xiàn)對已經(jīng)打開的文件進(jìn)行讀寫操作,指針變量關(guān)聯(lián)文件的定義形式:FILE * 指針變量標(biāo)識符;

        其中FILE必須大寫,指針變量標(biāo)識符可以自行定義,滿足C語言標(biāo)識符的命名規(guī)則即可,比如:FILE *fp;“*”表示該變量fp是一個指針變量,F(xiàn)ILE表示fp是指向文件的指針變量,通過文件指針變量fp可以對已經(jīng)打開的指定文件進(jìn)行相應(yīng)的操作。也就是通過將文件的FILE結(jié)構(gòu)體變量地址賦值給文件指針fp,則在程序中就建立了文件和文件指針間的聯(lián)系,程序就能通過該文件指針找到與它相關(guān)的文件,實現(xiàn)對文件的操作,在C語言中,凡是要對已打開的文件進(jìn)行操作,都要通過指向該文件的文件指針實現(xiàn)。

        例8 指針變量關(guān)聯(lián)引用文件

        #include <stdio.h>

        void main()

        { charch;

        FILE * fp;

        fp = fopen(“E:/CFile/test.txt”, “r”);

        ch = fgetc(fp);

        while(ch!=EOF)

        { putchar(ch);

        ch=fgetc(fp);

        }

        Fclose(fp);

        }

        文件指針變量fp指向一個已打開的文件“test.txt”,用fgetc(fp)字符讀函數(shù)從文件指針fp指向的文件讀取字符并賦值給字符變量ch,并通過while循環(huán)體語句繼續(xù)讀寫fp所指向的文件字符,文件讀取操作完成后,使用fclose函數(shù)關(guān)閉fp所指向的文件。

        8 結(jié)論

        在C語言中只有指針變量可以存放某類數(shù)據(jù)的地址,這類數(shù)據(jù)可以是普通變量、字符串、數(shù)組、函數(shù)、結(jié)構(gòu)體變量、文件等數(shù)據(jù)類型。不同類型的指針變量存儲的值都是不同類型數(shù)據(jù)對象在計算機內(nèi)存中的地址,C語言指針變量是依據(jù)它所指向的變量對象類型不同進(jìn)行區(qū)分,不同類型的指針變量是不能進(jìn)行賦值運算。

        C語言的精髓是指針,指針變量的正確使用能夠提高C語言程序代碼的可讀性,提高程序的運行效率,錯誤的使用指針變量會導(dǎo)致程序出錯或者是運行效率低下,通過系統(tǒng)研究指針變量對其它對象的關(guān)聯(lián)引用,有利于學(xué)習(xí)者和開發(fā)者使用各類指針變量提高C語言程序設(shè)計代碼質(zhì)量。

        猜你喜歡
        關(guān)聯(lián)
        不懼于新,不困于形——一道函數(shù)“關(guān)聯(lián)”題的剖析與拓展
        “苦”的關(guān)聯(lián)
        船山與宋學(xué)關(guān)聯(lián)的再探討
        原道(2020年2期)2020-12-21 05:47:06
        “一帶一路”遞進(jìn),關(guān)聯(lián)民生更緊
        新制度關(guān)聯(lián)、組織控制與社會組織的倡導(dǎo)行為
        奇趣搭配
        基于廣義關(guān)聯(lián)聚類圖的分層關(guān)聯(lián)多目標(biāo)跟蹤
        智趣
        讀者(2017年5期)2017-02-15 18:04:18
        探討藏醫(yī)學(xué)與因明學(xué)之間的關(guān)聯(lián)
        西藏科技(2016年5期)2016-09-26 12:16:39
        GPS異常監(jiān)測數(shù)據(jù)的關(guān)聯(lián)負(fù)選擇分步識別算法
        99热这里只有精品国产66| 久久国产精品国语对白| 久久国产精品精品国产色| 国产内射一级一片内射高清视频1| 中文字幕一区二区av| 中国精品18videosex性中国| 朝鲜女人大白屁股ass| 一本大道久久东京热无码av| 亚洲国产成人久久综合一区77| 免费中文熟妇在线影片| 国产成人久久精品流白浆| 蜜桃视频成年人在线观看| 精品国产一区二区三区色搞| 欧美丰满熟妇性xxxx| 四虎影视永久地址www成人 | 亚洲色大成网站www尤物| 久久精品国产亚洲AⅤ无码| 久久91精品国产91久久麻豆| 日韩av一区二区不卡在线| 午夜爽爽爽男女污污污网站| 亚洲精品无码av中文字幕| 亚洲人成网站77777在线观看| 亚洲欧美日韩一区在线观看| 少妇久久一区二区三区| av一区二区在线网站| 色诱久久av| 国产喷水1区2区3区咪咪爱av| 日本女优中文字幕亚洲| 亚洲国产精品国自拍av| 精品亚洲成av人在线观看| 国产丝袜美腿在线视频| 亚洲成熟中老妇女视频| 私人vps一夜爽毛片免费| 久久无码专区国产精品s| 超薄肉色丝袜一区二区| 正在播放淫亚洲| 亚洲桃色蜜桃av影院| 精品久久av一区二区| 97人伦色伦成人免费视频| 久久久精品人妻一区二区三区蜜桃| 狠狠久久久久综合网|