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

C語言指針應用

2014-06-27 08:47:30盧瑩瑩
考試周刊 2014年24期

盧瑩瑩

摘 要: “指針”是C語言的精髓,是C語言區獨有的功能,在C語言的程序設計過程中起著不可或缺的作用。只有學好了指針才算掌握了C語言,同時指針也是C語言最危險的特性,如果使用不當,則很容易指到意想不到的地方,產生錯誤很難發現。應該特別注意指針教學,高效應用指針,發揮C語言的優勢。

關鍵詞: C語言 指針 函數 數組

“指針”是C語言中廣泛使用的一種數據類型,運用指針編程是C語言最主要的風格之一。利用指針可以表示各種數據結構,它與函數、數組的使用和傳遞數據有密切聯系,能方便地訪問數組,還能像匯編語言一樣處理內存地址,從而編出精致而高效的程序。指針極大地強化了C語言的功能。學習指針是學習C語言最重要的一環,能否正確理解和使用指針是判斷是否掌握了C語言的重要標志。但是指針也是C語言最危險的特性,如果使用不當,則很容易指到意想不到的地方,產生錯誤也很難發現。因此,對于初學者來說,應特別注意指針的應用。怎樣才能應用好指針呢?下面筆者以在計算機C語言教學中的體會與大家進行探討。

一、理解指針

在C語言中任何數據只要定義了,在內存中就是有一定的存儲單元的。存儲單元就是變量在計算機中的存儲地址,指針就是用來表示這些地址的變量。所以簡單地說,指針就是地址,變量的指針就是變量的地址,這里還涉及一個概念就是指針變量,所謂指針變量就是用來存放指針(地址)的變量。例如:int a;假設a的地址是2000,而2000又存儲在變量point中,那么變量point就是指針的變量簡稱指針變量,a就是指針變量所指向的變量。很多初學者都存在這樣的誤區:既然指針放的是地址,而2000正好是變量a的地址,那么對于指針point就可以這樣賦值:point=2000,這是錯誤的,這里的2000表示的不是地址是一個整型數據。所以對于指針變量的賦值只能用取地址運算符“&”進行賦值即:point=&a;&a即為a的地址。

二、指針與函數

指針作為C語言的精華有很多用途,除具有一般的功能外,其中具體特殊功能的應用總結起來有三個方面:一是用于在函數中可以返回多個值;二是可以實現動態調用函數;三是實現數組的動態定義。其中,普通變量作為函數的參數,傳遞的是變量的值,因此只能帶回一個返回值,但在有些場合需要返回多個值,這就必須用到指針做函數的參數,因為指針作為參數傳遞的是地址,讓實參和形參指向同一個變量的地址,N個形參所指向的變量的值改變了,N個實參的值也自然改變了,從而實現了帶回多個返回值。這里舉個例子,編寫一個函數實現兩個數從小到大輸出。這個程序需要子函數實現兩個數的交換,把交換后的兩個值通過指針傳回主函數輸出,傳回來的是兩個值。所以普通變量做函數的參數是無法實現的,只能用指針作為函數的參數。具體實現:

子函數實現交換:

swap(p1,p2)

int *p1,*p2;

{int p;

p=*p1;

*p1=*p2;

*p2=p;

}

主程序實現調用,輸出:

main()

{int a,b;

int *pointer_1,*pointer_2;

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

point_ 1=&a;

point_2=&b;

if(a

swap(point_1,point_2);

printf(“%d,%d”,a,b);

}

由此可見,要通過函數調用得到N個返回值可以通過以下三步實現:(1)主調函數中設N個變量,用N個指針指向他們;(2)將指針變量作實參,將N個變量的地址傳給形參;(3)通過形參指針變量指向的改變,改變N個變量的值。最后主調函數中就可以得到N個變量的返回值。

三、指針與數組

前面提到任何數據都有存儲單元,都有指針。所以,從這個角度出發可以將指針分為:指向變量的指針、數組指針、字符指針、指向指針的指針、函數指針、結構變量的指針及文件指針,等等。其中,指向變量的指針就是存儲變量的地址的,這是指針最簡單的一種類型。那么一個變量有地址,一個數組有若干個元素,每個元素都有一個地址,所謂數組的指針,就是指數組的名稱,實際上是指向整個數組空間的起始地址。數組元素的指針是數組元素的地址。例如:int a[10];int*p;這里的數組名a就是數組的首地址,本質上是一個指針。a[2]表示距離a指向空間向后2個位置所在空間中的存放的值,所以a[2]=*(a+2)。那么如果讓p=a,p就是指向數組的指針,對于a我們可以做加減整數運算,利用它表示數組中任何數據的值。那么對于指針也可以通過加減整數運算來表示數組中的任何數據。指針變量加上或減區一個整數n表示把指針指向的當前位置向前或向后移動n個位置。具體移動的字節數和指針數組的類型在內存所占的字節數有關系,如果指針數組類型為整型,在內存中占2個字節,那么,指針p+1,實際上的地址值就是原址加2,對于數組元素來說就是指針向后移動一個元素。如int a[10],*p,*s;p=a;s=p+2;其中s的值表示數組中首地址向后移動2個數組元素的位置,表示a[2]對應的地址,而具體移動的字節數則為4個字節。為了表示兩個地址間存在的距離,可以通過指針間的減法實現。指針之間是不能有加法操作的,指針的加減運算只能對數組指針變量進行,對指向其他類型的變量的指針變量做加減運算是毫無意義的。而且兩個指針變量之間的運算只有指向同一數組時它們之間才能進行運算,否則運算將失去意義。

四、結語

C語言是到目前為止學習最多的程序設計語言之一,也是國外大學計算機專業唯一的必修課程。在整個C語言教學中,指針是一個十分重要的部分,也是最難掌握的部分之一。本文從對指針概念的理解、指針在函數和數組的使用等方面系統論述了指針,目的是讓大家清晰地了解指針、掌握指針,從而高效地應用指針。只有掌握好指針,才能充分發揮C語言的優勢。

參考文獻:

[1]譚浩強.C程序設計教程.北京:清華大學出版社,2008,11.

[2]陳剛.C語言程序設計.清華大學出版社,2010,2.

[3]魏海新,李燕.C語言程序設計實用教程.機械工業出版社,2007,7.

[4]路俊維,馬雪松.C語言程序設計.中國鐵道工業出版社,2009,6.

主站蜘蛛池模板: 网友自拍视频精品区| 欧美亚洲国产精品久久蜜芽| 欧美三级视频在线播放| 中文字幕日韩视频欧美一区| 亚洲综合精品第一页| 成年人国产视频| 国产精品自拍露脸视频| 美女视频黄频a免费高清不卡| 欧美成人A视频| 色香蕉影院| 国产偷倩视频| 亚洲欧美在线综合一区二区三区| 亚洲精品第1页| 国产免费羞羞视频| 少妇精品网站| 亚洲AV无码乱码在线观看代蜜桃| 538国产在线| 精品一区二区三区四区五区| 热久久这里是精品6免费观看| 亚洲中文字幕在线精品一区| 九九久久99精品| 欧美国产精品不卡在线观看| 精品中文字幕一区在线| 国产在线高清一级毛片| 国产无码精品在线播放| 黄色网址免费在线| 91久久青青草原精品国产| 久久久久国产精品嫩草影院| 免费在线观看av| 日本91视频| 第九色区aⅴ天堂久久香| 国产精品无码久久久久久| 亚洲女同一区二区| 好吊妞欧美视频免费| 久久频这里精品99香蕉久网址| 国产午夜精品鲁丝片| 久久综合色88| 欧美日韩在线亚洲国产人| 在线观看国产黄色| 97久久精品人人做人人爽| 婷婷色狠狠干| 国产第一福利影院| 91亚洲影院| 亚洲精品国产首次亮相| 人禽伦免费交视频网页播放| 在线无码av一区二区三区| 亚洲二区视频| 久久不卡精品| 久久久亚洲色| 欧美区一区二区三| 夜夜操天天摸| 欧美翘臀一区二区三区| 欧美不卡二区| 亚洲av片在线免费观看| 欧美一级高清视频在线播放| 91久久精品日日躁夜夜躁欧美| 成人av专区精品无码国产| 欧美视频在线不卡| 久久综合国产乱子免费| 亚洲人成色77777在线观看| 高清码无在线看| 精品国产91爱| 国内精自视频品线一二区| 国内99精品激情视频精品| 日韩欧美中文字幕一本| 亚洲无限乱码一二三四区| h网址在线观看| 毛片免费在线视频| 亚洲国产成熟视频在线多多| 国产一区二区三区精品久久呦| 国产精品亚洲精品爽爽| 亚洲精品卡2卡3卡4卡5卡区| 99ri精品视频在线观看播放| 亚洲国产天堂久久综合| 亚洲综合网在线观看| 亚洲人成日本在线观看| 久久免费视频6| 亚洲区一区| 动漫精品中文字幕无码| 91精品国产麻豆国产自产在线| 国产成人8x视频一区二区| 综合人妻久久一区二区精品 |