999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言中各類地址的含義及運用

2018-01-04 11:06:12崔孝鳳
電腦知識與技術 2018年30期

崔孝鳳

摘要:針對C語言中的各類地址進行了討論,提出了深入理解C語言的各類地址的存儲原理能夠更好地理解和學習C語言,對初學者具有很好的啟發和引領作用。

關鍵詞:C語言;地址;存儲單元;數據類型;數組

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2018)30-0232-02

對于初學C語言的同學來說,C語言的地址可謂一大難點,如何正確地理解C語言中的各種地址關系到對不同數據類型的使用,直接關系到編程質量,本文從C語言地址的含義、應用等方面解析,對C語言學習者起到啟發和引領作用。

1 C語言地址的基本概念

C語言地址,是指內存地址的概念。計算機內存中的各個存儲單元都是有序的,按字節編碼,這個編碼就是地址,可以把存儲單元的地址形象地理解成我們房屋的門牌號。

2 C語言中的地址種類

C語言的數據類型非常豐富,不同類型的變量所占的存儲單元大小是不一樣的,下面具體解析一下。

1)整型變量的地址

C語言中的整型變量可以分為短整型short int、基本整型int及長整型long int三種類型,這三種類型所占的內存單元字節數是不一樣的,短整型變量一般是占用2個字節,后面兩種一般是占用4個字節,可以使用關鍵字sizeof返回,如可以使用語句printf("%d %d %d\n",sizeof(short int),sizeof(int),sizeof(long int));來返回這三種數據類型的變量所占的內存字節數。

2)實型變量的地址

C語言中的實型變量可以分為單精度實型float、雙精度實型double及長雙精度實型long double三種類型,在內存中分別占用4、8、16個字節,可以使用語句printf("%d %d %d\n",sizeof(float),sizeof(double),sizeof(long double)); 來返回這三種數據類型的變量所占的內存字節數。

3)字符型變量的地址

C語言中的字符型變量就是char,占用1個字節。可以使用語句printf("%d\n",sizeof(char));來返回一個字符型變量在內存中所占的字節數。

4)數組的地址

C語言中的數組存儲的是同一種類型的數據,它們的存儲單元是連續的一片存儲空間。一個數組所占單元的多少既跟數組的數據類型有關系,也跟數組的大小密切相關,比如如果有這樣的定義int a[10];那么數組a所占空間就應該是10*4即40個字節,可以使用語句printf("%d\n",sizeof(a));來輸出數組a所占的內存單元所占字節數,確實是40個字節。如果是double a[10];呢,顯然數組a所占內存空間就應該是10*8即80個字節,所以數組在使用前一定首先要定義好,這是很明顯的道理。這兒需要說明一下的是數組的首地址,C語言中規定數組名表示了數組的首地址,即對于數組a來說,a就相當于&a;[0],所以由此我們在編程中就可以很方便地訪問到數組中的所有元素。

5)指針的地址

C語言的指針可以說是C語言的靈魂所在,我們說指針就是地址,那么指針也是C語言的一種數據類型,它的地址占幾個字節呢?不管指針指向什么類型的變量,它所占的內存空間都是8個字節(說明:一般編譯器會把指針的長度定義為系統的字長),比如int i,*pi=&i;;

char ch,*pch=&ch;; double f,*pf=&f;; printf("%d\n",sizeof(pi)); printf("%d\n",sizeof(pch)); printf("%d\n",sizeof(pf));我們都會得到相同的結果8。

3 C語言中不同地址的應用

1)基本數據類型地址的應用

C語言的基本數據類型是指基本整型int、實型float和字符型char,對于這三種基本類型,當定義變量時系統就會給它們分配相應的內存單元,對它們進行賦值等操作時,系統會直接從相應的內存單元地址中取出相應的值直接進行操作。對于編程者來說,此時感覺不到地址的作用,其實地址隨時在起作用,比如下面的程序例子。

#include

int main(void)

{int a;

printf("請輸入一個整數:\n");

scanf("%d",&a;);

a=a+1;

printf("a=%d\n",a);

return 0;

}

從一開始定義變量a,系統首先給變量a分配內存地址,然后使用scanf輸入數據,輸入的數據保存到了變量a的內存地址中,當執行語句a=a+1;進行運算時系統會首先從變量a的相應存儲地址單元中取出變量a的值,運算完后再把結果保存到變量a的存儲單元中,最后使用printf輸出變量的值時也需要從變量的存儲單元中取出變量a的值。所以整個程序執行過程中一直在使用變量a的地址,不過用戶渾然不覺罷了。

2)數組地址的應用

C語言中的數組是一組名稱相同類型相同的數據的集合,數組名稱代表了數組的起始地址,一旦定義數組,系統就給該數組分配一片連續的相應的存儲空間。對數組的使用其實就是對數組元素的各種操作,既可以使用下標元素的方式使用,也可以使用地址的方式,使用下標方式對初學者來說更好理解,使用地址方式更接近地址本質,編程者可以根據自己的喜好選擇喜歡的方式。

請看下面的程序:

程序功能:從鍵盤上輸入10個整數,然后再在屏幕上輸出來。

程序源代碼如下:

#include

int main(void)

{int a[10],i;

printf("請輸入10個整數,用空格分隔:\n");

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

scanf("%d",&a;[i]);//或者使用語句:scanf("%d",a+i);

printf("您剛才輸入的10個整數如下:\n");

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

printf("%d ",*(a+i));//或者使用語句:printf("%d ",a[i)]);

return 0;

}

說明:輸入數據scanf("%d",&a;[i]);時使用的是對數組元素直接訪問的方式,輸出數據printf("%d ",*(a+i));時使用的是對數組元素間接訪問的方式,其中a+i表示的就是第i個元素的地址,利用間接取值運算符*取出數組元素的值。

如果在程序中加一行代碼依次輸出10個數組元素的地址的話,如:

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

printf("%d ",a+i);

可能會看到如下的結果:

6487584 6487588 6487592 6487596 6487600 6487604 6487608 6487612 6487616 6487620

從這個結果可以清楚地看出,數組的地址是連續的,每相鄰兩個元素的地址相差4個字節,正好是int型變量在內存中所占字節數,顯然,如果是字符型的話,每兩個元素之間相差的地址就應該是1個字節,我們可以方便地驗證。就是說,不同類型的數組,每個元素所占的地址空間是跟所屬類型相對應的。從這個例子我們進一步明白C語言中的數據的確是存儲在相應內存單元中的。

4 結論

C語言中每一個變量和函數都對應著相應的地址,正確理解各類地址有利于對C語言更深入的理解和掌握,相信本文對地址的探討對初學C語言的讀者能夠起到一定的啟發和引領作用。

參考文獻:

[1] 劉林香,許燕青. 談C語言中指針、地址和數組的相互關系[J].硅谷,2009-01-23.

[2] 郭偉剛. C語言教學中運用printf函數幫助學生理解地址和指針[J]. 計算機教育,2008-12-10.

[3] 陸云飛. 淺談C語言數據與內存分配空間和地址的聯系[J].科技信息,2006-08-05.

[4] 楊延玉. C語言中的地址類型[J]. 平原大學學報,2005-12-20.

[5] 魏力生,朱方洲. 談如何掌握C語言中數組、指針與地址相互關系[J].電腦知識與技術,2003-04-15.

【通聯編輯:王力】

主站蜘蛛池模板: 中文字幕 91| 中文字幕调教一区二区视频| 日韩毛片免费观看| 婷婷五月在线视频| 亚洲天堂免费在线视频| 中文毛片无遮挡播放免费| 特黄日韩免费一区二区三区| 久久视精品| 黄网站欧美内射| 国产成人综合在线观看| 色婷婷综合激情视频免费看| 91在线无码精品秘九色APP| 国产精品网址你懂的| 欧美一级高清片久久99| 国产精品任我爽爆在线播放6080| 精品欧美视频| 国产成人调教在线视频| 亚洲成在线观看| 免费人成在线观看成人片| 日本五区在线不卡精品| 国产成人一区| 亚洲大学生视频在线播放| 国产高清精品在线91| 亚洲第一极品精品无码| 高h视频在线| 亚洲中文字幕无码爆乳| 国产精品私拍在线爆乳| 免费国产小视频在线观看| 亚洲天堂网2014| 亚洲国产中文精品va在线播放| 亚洲欧洲日本在线| 伊人色在线视频| 欧美第二区| 亚洲午夜国产精品无卡| 日韩精品免费一线在线观看| 无码在线激情片| 伊人色综合久久天天| 午夜国产大片免费观看| 午夜日b视频| 欧美日韩国产高清一区二区三区| 国产特级毛片aaaaaa| 午夜不卡视频| 美女一级毛片无遮挡内谢| 国产视频入口| 亚洲第一视频网站| 国产精品女主播| 亚洲国产精品无码AV| 伊人成人在线| 国产成人在线小视频| 国产精品吹潮在线观看中文| 欧美激情第一欧美在线| 88av在线| 色天堂无毒不卡| 欧美日韩北条麻妃一区二区| 亚洲成肉网| 亚洲欧美日韩高清综合678| 国产精品无码制服丝袜| 刘亦菲一区二区在线观看| www.亚洲天堂| 日本免费一级视频| 婷婷激情亚洲| 综合亚洲色图| 在线观看欧美国产| 久草视频中文| 啦啦啦网站在线观看a毛片 | 不卡午夜视频| 日本精品影院| 不卡无码h在线观看| 青青草一区| 国产黄在线观看| 亚洲天堂色色人体| 综合亚洲网| 成人精品免费视频| 黄色成年视频| 亚洲国产一区在线观看| 91香蕉视频下载网站| 精品国产美女福到在线不卡f| 天堂网亚洲系列亚洲系列| 日本精品中文字幕在线不卡| 免费看a级毛片| 色有码无码视频| 亚洲人成影视在线观看|