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

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

C語言入門之指針的慨念(1)

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

  指針是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)賦值運算

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

   ①指針變量初始化賦值,前面已作介紹。

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

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

   ③把一個指針變量的值賦予指向相同類型變量的另一個指針變量。如:

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

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

   ④把數組的首地址賦予指向數組的指針變量。

   例如:

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

   也可寫為:

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

   也可賦予pa*/

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

int a[5],*pa=a;

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

   ⑥把函數的入口地址賦予指向函數的指針變量。例如: int (*pf)();pf=f; /*f為函數名*/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品青草社区| 26uuu另类亚洲欧美日本一| 日韩免费在线视频| 国产亚洲视频在线观看| 欧美精品久久久久久久久| 欧美日韩国产成人| 欧美日韩激情美女| 一区国产精品视频| 国产午夜精品全部视频播放| 欧美理论电影网| 亚洲欧美国产一区二区三区| 久久免费视频网| 亚洲精美色品网站| 91av视频导航| 黄色一区二区在线观看| 亚洲久久久久久久久久| 欧美激情二区三区| 国产欧美va欧美va香蕉在线| 中文字幕亚洲欧美一区二区三区| 精品偷拍各种wc美女嘘嘘| 国产精品高潮呻吟久久av无限| 国产在线播放91| 91午夜在线播放| 日本不卡高字幕在线2019| 91在线无精精品一区二区| 国产成人久久精品| 91深夜福利视频| 亚洲成人免费在线视频| 亚洲精品日韩激情在线电影| 成人性生交大片免费看视频直播| 亚洲美女精品久久| 91国产在线精品| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品自拍小视频| 国产亚洲精品久久久优势| 成人国产在线激情| 日韩经典第一页| 精品av在线播放| 中文字幕精品一区久久久久| 日韩经典一区二区三区| 欧美精品久久久久久久久久| 成人黄色av免费在线观看| 久久精品国产96久久久香蕉| 精品国产自在精品国产浪潮| 亚洲香蕉成人av网站在线观看| 国产精品第3页| 日韩精品电影网| 日韩大胆人体377p| 九九热在线精品视频| 成人深夜直播免费观看| 91精品国产91久久久久久不卡| 97视频在线观看免费高清完整版在线观看| 欧美激情一区二区三区高清视频| 久久久精品999| 国产91九色视频| 最近免费中文字幕视频2019| 欧美成人精品三级在线观看| 在线播放国产一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 国产精品久久久久一区二区| 97人人做人人爱| 黑人欧美xxxx| 7m精品福利视频导航| 亚洲新声在线观看| 日韩电影免费观看在线| 欧美性高潮在线| 欧美日韩免费在线| 欧美日韩第一视频| 538国产精品一区二区免费视频| 亚洲国产另类 国产精品国产免费| 伊人精品在线观看| zzijzzij亚洲日本成熟少妇| 欧美激情中文字幕乱码免费| 国产一区二区av| 欧美亚洲第一页| 久久偷看各类女兵18女厕嘘嘘| 国产精品久久久久久久久久久久久久| 成人精品视频在线| 国产成人精品av在线| 懂色av中文一区二区三区天美| 欧美日韩国产精品一区二区不卡中文| 久久中文字幕一区| 国产精品电影网站| 欧美午夜影院在线视频| 日韩欧美亚洲综合| 午夜精品一区二区三区在线播放| 欧美精品videosex极品1| 中文字幕国产精品久久| www国产91| 国产视频亚洲精品| 欧美日韩国产在线看| 国产精品黄色av| 97视频免费在线观看| 亚洲成年网站在线观看| 亚洲第五色综合网| 欧美成人免费大片| 亚洲一区二区久久久久久久| 国产一区二区欧美日韩| 亚洲精品第一国产综合精品| 亚洲欧美一区二区三区久久| 亚洲午夜女主播在线直播| 最近更新的2019中文字幕| 久久人人爽人人爽人人片亚洲| 91精品视频一区| 欧美精品aaa| 国产91色在线播放| 国产精品中文字幕在线观看| 亚洲欧美激情精品一区二区| 91久久久久久久久| 欧美日韩在线视频一区二区| 成人午夜小视频| 青青a在线精品免费观看| 日韩av免费在线观看| 91免费精品视频| 国产精品久久久久久久美男| 国产成人精品在线播放| 啊v视频在线一区二区三区| 国产精品扒开腿做爽爽爽视频| 粉嫩老牛aⅴ一区二区三区| 亚洲石原莉奈一区二区在线观看| 国产噜噜噜噜久久久久久久久| 日本高清不卡在线| 亚洲午夜av久久乱码| 18性欧美xxxⅹ性满足| 国产一区二区三区精品久久久| 国产精品主播视频| 91中文精品字幕在线视频| 欧美富婆性猛交| 欧美成年人视频| 国产精品永久免费在线| 国产精品久久久久久影视| 中文字幕亚洲综合久久| 久久亚洲精品国产亚洲老地址| 成人精品视频99在线观看免费| 亚洲free嫩bbb| 亚洲色图校园春色| 久久久999国产| 色婷婷av一区二区三区久久| 日韩精品在线视频观看| 久久精品91久久香蕉加勒比| 九九热精品视频| 国产不卡av在线免费观看| 国产精品日韩久久久久| 国产在线观看一区二区三区| 欧美日韩国产成人在线观看| 5566日本婷婷色中文字幕97| 欧美做爰性生交视频| 黑人巨大精品欧美一区二区| 精品无人区太爽高潮在线播放| 中文字幕v亚洲ⅴv天堂| 久久成人一区二区| 国产成人在线亚洲欧美| 亚洲第一视频网站| 日韩av电影在线网| 成人激情免费在线| 成人免费看片视频| 亚洲男人的天堂网站| 国产午夜精品一区理论片飘花| 国产一区二区久久精品| 日韩在线视频网站| 国产激情综合五月久久| 精品国产鲁一鲁一区二区张丽| 久久男人资源视频| 久久夜色精品国产亚洲aⅴ|