亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言初學者入門講座 第十一講 指針的慨念(1)

2019-11-17 05:42:01
字體:
來源:轉載
供稿:網友

  指針是C語言中廣泛使用的一種數據類型。 運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數據結構; 能很方便地使用數組和字符串; 并能象匯編語言一樣處理內存地址,從而編出精練而高效的程序。指針極大地豐富了C語言的功能。 學習指針是學習C語言中最重要的一環, 能否正確理解和使用指針是我們是否把握C語言的一個標志。同時, 指針也是C語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多編程,上機調試。只要作到這些,指針也是不難把握的。



  指針的基本概念 在計算機中,所有的數據都是存放在存儲器中的。 一般把存儲器中的一個字節稱為一個內存單元, 不同的數據類型所占用的內存單元數不等,如整型量占2個單元,字符量占1個單元等, 在第二章中已有具體的介紹。為了正確地訪問這些內存單元, 必須為每個內存單元編上號。 根據一個內存單元的編號即可準確地找到該內存單元。內存單元的編號也叫做地址。 既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針。 內存單元的指針和內存單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關系。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之后在存單上寫入存款、取款的金額。在這里,帳號就是存單的指針, 存款數是存單的內容。對于一個內存單元來說,單元的地址即為指針, 其中存放的數據才是該單元的內容。在C語言中, 答應用一個變量來存放指針,這種變量稱為指針變量。因此, 一個指針變量的值就是某個內存單元的地址或稱為某內存單元的指針。圖中,設有字符變量C,其內容為“K”(ASCII碼為十進制數 75),C占用了011A號單元(地址用十六進數表示)。設有指針變量P,內容為011A, 這種情況我們稱為P指向變量C,或說P是指向變量C的指針。 嚴格地說,一個指針是一個地址, 是一個常量。而一個指針變量卻可以被賦予不同的指針值,是變。 但在常把指針變量簡稱為指針。為了避免混淆,我們中約定:“指針”是指地址, 是常量,“指針變量”是指取值為地址的變量。 定義指針的目的是為了通過指針去訪問內存單元。
 
  既然指針變量的值是一個地址, 那么這個地址不僅可以是變量的地址, 也可以是其它數據結構的地址。在一個指針變量中存放一
個數組或一個函數的首地址有何意義呢? 因為數組或函數都是連續存放的。通過訪問指針變量取得了數組或函數的首地址, 也就找到了該數組或函數。這樣一來, 凡是出現數組,函數的地方都可以用一個指針變量來表示, 只要該指針變量中賦予數組或函數的首地址即可。這樣做, 將會使程序的概念十分清楚,程序本身也精練,高效。在C語言中, 一種數據類型或數據結構往往都占有一組連續的內存單元。 用“地址”這個概念并不能很好地描述一種數據類型或數據結構, 而“指針”雖然實際上也是一個地址,但它卻是一個數據結構的首地址, 它是“指向”一個數據結構的,因而概念更為清楚,表示更為明確。 這也是引入“指針”概念的一個重要原因。

  指針變量的類型說明

  對指針變量的類型說明包括三個內容:

  (1)指針類型說明,即定義變量為一個指針變量;

  (2)指針變量名;

  (3)變量值(指針)所指向的變量的數據類型。

  其一般形式為: 類型說明符 *變量名;

  其中,*表示這是一個指針變量,變量名即為定義的指針變量名,類型說明符表示本指針變量所指向的變量的數據類型。

  例如: int *p1;表示p1是一個指針變量,它的值是某個整型變量的地址。 或者說p1指向一個整型變量。至于p1究竟指向哪一個整型變量, 應由向p1賦予的地址來決定。

  再如:

staic int *p2; /*p2是指向靜態整型變量的指針變量*/
float *p3; /*p3是指向浮點變量的指針變量*/
char *p4; /*p4是指向字符變量的指針變量*/ 應該注重的是,一個指針變量只能指向同類型的變量,如P3 只能指向浮點變量,不能時而指向一個浮點變量, 時而又指向一個字符變量。

  指針變量的賦值

  指針變量同普通變量一樣,使用之前不僅要定義說明, 而且必須賦予具體的值。未經賦值的指針變量不能使用, 否則將造成系統混亂,甚至死機。指針變量的賦值只能賦予地址, 決不能賦予任何其它數據,否則將引起錯誤。在C語言中, 變量的地址是由編譯系統分配的,對用戶完全透明,用戶不知道變量的具體地址。 C語言中提供了地址運算符&來表示變量的地址。其一般形式為: & 變量名; 如&a變示變量a的地址,&b表示變量b的地址。 變量本身必須預先說明。設有指向整型變量的指針變量p,如要把整型變量a 的地址賦予p可以有以下兩種方式:

  (1)指針變量初始化的方法

int a;
int *p=&a;

  (2)賦值語句的方法

int a;
int *p;
p=&a;

  不答應把一個數賦予指針變量,故下面的賦值是錯誤的: int *p;p=1000; 被賦值的指針變量前不能再加“*”說明符,如寫為*p=&a 也是錯誤的

  指針變量的運算

  指針變量可以進行某些運算,但其運算的種類是有限的。 它只能進行賦值運算和部分算術運算及關系運算。

  1.指針運算符

  (1)取地址運算符&

  取地址運算符&是單目運算符,其結合性為自右至左,其功能是取變量的地址。在scanf函數及前面介紹指針變量賦值中,我們已經了解并使用了&運算符。

  (2)取內容運算符*

  取內容運算符*是單目運算符,其結合性為自右至左,用來表示指針變量所指的變量。在*運算符之后跟的變量必須是指針變量。需要注重的是指針運算符*和指針變量說明中的指針說明符* 不是一回事。在指針變量說明中,“*”是類型說明符,表示其后的變量是指針類型。而表達式中出現的“*”則是一個運算符用以表示指針變量所指的變量。

main(){
 int a=5,*p=&a;
 PRintf ("%d",*p);
}
......

  表示指針變量p取得了整型變量a的地址。本語句表示輸出變量a的值。

  2.指針變量的運算

  (1)賦值運算

  指針變量的賦值運算有以下幾種形式:

 ?、僦羔樧兞砍跏蓟x值,前面已作介紹。

  ②把一個變量的地址賦予指向相同數據類型的指針變量。例如:

int a,*pa;
pa=&a; /*把整型變量a的地址賦予整型指針變量pa*/

 ?、郯岩粋€指針變量的值賦予指向相同類型變量的另一個指針變量。如:

int a,*pa=&a,*pb;
pb=pa; /*把a的地址賦予指針變量pb*/

  由于pa,pb均為指向整型變量的指針變量,因此可以相互賦值。

 ?、馨褦到M的首地址賦予指向數組的指針變量。

  例如:

int a[5],*pa;
pa=a; (數組名表示數組的首地址,故可賦予指向數組的指針變量pa)

  也可寫為:

pa=&a[0]; /*數組第一個元素的地址也是整個數組的首地址,

  也可賦予pa*/

  當然也可采取初始化賦值的方法:

int a[5],*pa=a;

 ?、莅炎址氖椎刂焚x予指向字符類型的指針變量。例如: char *pc;pc="c language";或用初始化賦值的方法寫為: char *pc="C Language"; 這里應說明的是并不是把整個字符串裝入指針變量, 而是把存放該字符串的字符數組的首地址裝入指針變量。 在后面還將具體介紹。

 ?、薨押瘮档娜肟诘刂焚x予指向函數的指針變量。例如: int (*pf)();pf=f; /*f為函數名*/



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品流白浆视频| 国产一区二区三区欧美| 韩国国内大量揄拍精品视频| 亚洲国产精品久久精品怡红院| 久久精品最新地址| 日韩大片免费观看视频播放| 国产激情视频一区| 色噜噜狠狠狠综合曰曰曰| 亚洲一区二区三区香蕉| 午夜精品久久久久久久久久久久| 中文字幕精品一区二区精品| 欧美午夜宅男影院在线观看| 91精品一区二区| 久久影院资源网| 亚洲国产精品电影在线观看| 亚洲女同精品视频| 欧美专区第一页| 欧美黑人一级爽快片淫片高清| 久久久久久网址| 精品爽片免费看久久| 国产一区二区三区日韩欧美| 中文字幕亚洲欧美日韩高清| 国产精品久久久精品| 91老司机精品视频| 青青久久aⅴ北条麻妃| 国产精品视频导航| 日韩视频精品在线| 欧美高清无遮挡| 国产精品电影观看| 91麻豆国产精品| 国产精品视频专区| 国产精品久久久久久久一区探花| 91精品久久久久久综合乱菊| 国产成人涩涩涩视频在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 国产一区二区色| 成人黄色av网站| 欧美成人激情视频免费观看| 欧美激情中文字幕在线| 日本一区二三区好的精华液| 日韩视频―中文字幕| 国产视频精品自拍| 精品久久久999| www日韩中文字幕在线看| xxx成人少妇69| 国产精品视频中文字幕91| 精品亚洲精品福利线在观看| 国产精品一二三视频| 欧美精品免费播放| 国产日韩换脸av一区在线观看| 亚洲国产女人aaa毛片在线| 欧美日韩成人在线播放| 国产一区二区精品丝袜| 亚洲人成五月天| 国产欧美精品xxxx另类| 成人精品一区二区三区| 日韩毛片在线看| 亚洲成人动漫在线播放| 久久久久久com| 精品国产1区2区| 日韩中文有码在线视频| 最近2019中文字幕一页二页| 国产成人黄色av| 国产精品免费一区二区三区都可以| 91人人爽人人爽人人精88v| 91产国在线观看动作片喷水| 国产免费一区视频观看免费| 欧美丰满老妇厨房牲生活| 日韩激情视频在线| 日韩av不卡在线| 亚洲精品影视在线观看| 欧美性猛交xxxx乱大交3| www.国产精品一二区| 中文字幕亚洲情99在线| 国产精品极品尤物在线观看| 亚洲一区二区少妇| 日韩av网站在线| 尤物九九久久国产精品的特点| 精品毛片网大全| 亚洲国产欧美一区二区三区同亚洲| 亚洲韩国欧洲国产日产av| 色噜噜国产精品视频一区二区| 欧美日韩成人在线观看| 欧美激情aaaa| 久久国产精品99国产精| 91久久精品一区| 精品视频一区在线视频| 热久久这里只有| 亚洲人成人99网站| 久久久999精品视频| 久久久精品国产一区二区| 久久伊人免费视频| 亚洲精品日韩激情在线电影| 欧美高清视频在线| 国内揄拍国内精品| 欧美丰满片xxx777| 亚洲欧美自拍一区| 在线播放国产一区中文字幕剧情欧美| 欧美性做爰毛片| 亚洲国产成人精品女人久久久| 国产欧美日韩高清| 亚洲精品成a人在线观看| 最近2019中文字幕一页二页| 日韩av在线高清| 国产精品久久一区| 日本国产欧美一区二区三区| 日本高清不卡在线| 精品福利一区二区| 亚洲成人av资源网| 欧美激情xxxx| 国产亚洲人成网站在线观看| 国语自产精品视频在免费| 国产91精品青草社区| 久久久精品久久久| 97视频色精品| 精品久久久久久久久久久久久久| 国产精品18久久久久久麻辣| 久久精品国产91精品亚洲| 2019中文字幕在线观看| 色综合视频一区中文字幕| 日韩精品在线免费观看| 日韩大陆欧美高清视频区| 欧美激情精品久久久久久免费印度| 亚洲国产美女精品久久久久∴| 国产成人精品一区二区三区| 一区二区欧美激情| 亚洲香蕉伊综合在人在线视看| 久久精品99无色码中文字幕| 国产精品免费久久久| 亚洲视频综合网| 一本一本久久a久久精品综合小说| 久久青草精品视频免费观看| 亚洲**2019国产| 国产欧美日韩最新| 中文字幕不卡av| 日韩成人av网址| 久久在线精品视频| 亚洲人成绝费网站色www| 黄色一区二区在线| 91精品国产综合久久香蕉| 日韩女优人人人人射在线视频| 国产做受高潮69| 亚洲欧洲日韩国产| 激情懂色av一区av二区av| 色综合久综合久久综合久鬼88| 人九九综合九九宗合| 亚洲男人天天操| 亚洲午夜激情免费视频| 亚洲人成电影网站| 欧美最猛黑人xxxx黑人猛叫黄| 日本一区二区在线播放| 91tv亚洲精品香蕉国产一区7ujn| 欧美理论电影网| 亚洲成人久久网| 国产在线精品成人一区二区三区| y97精品国产97久久久久久| 亚洲精品白浆高清久久久久久| 国产福利视频一区二区| 亚洲国产精品久久| xxx成人少妇69| 久久久www成人免费精品张筱雨| 精品呦交小u女在线| 亚洲人精品午夜在线观看| 久久亚洲私人国产精品va|