全国计算机二级考试c语言指针,全国计算机二级考试C语言 指针精讲课件.ppt
全國計算機二級考試C語言 指針精講課件
第七章:指 針;第一節(jié):指針概述;如:執(zhí)行以下說明語句后: int a=3,b=4; float c=4.5,d=8.6; char e=‘x’,f=‘y’;其內(nèi)存分配情況如圖:整型變量a,b占兩個字節(jié),若a的地址為1010,則b的地址為1010+2=1012;實型變量c,d占四個字節(jié),若c的地址為1014,則d的地址為1010+2=1018;字符型變量e,f占一個字節(jié),若e的地址為1022,則f的地址為1023;;注意:1:變量的地址是通過‘&’運算符進行計算.例如:上例中&b是計算出變量b的地址1012.以前曾介紹過scanf函數(shù),它的參數(shù)中就需要一個變量的地址.如:scanf(“%d”,&b);中的&b,而scanf(“%d”,&b);是表示將數(shù)據(jù)送入變量b的地址&b所指示的內(nèi)存單元.從而,得到指針的定義.2:指針:訪問變量,首先應找到其在內(nèi)存的地址,或者說:一個地址唯一指向一個內(nèi)存變量,我們稱這個地址為變量的指針.;二:指針與指針變量 地址猶如要找存儲區(qū)域的路標,在程序設計語言中被稱為指針.對內(nèi)存中變量的訪問有以下兩種方式: 1.直接訪問:把通過變量名或地址訪問程序中一個實 體的存儲空間的方式稱為“直接訪問”. 2.間接訪問:把地址存入在一個變量中,然后通過先找出變量中的值(一個地址),再由此地址找到最終要訪問的變量的方法,稱“間接訪問”. 注意:( 1) 存放地址的變量是一個特殊的變量,它只用來存放地址而不能用來存放其它類型. (2)“間接訪問”方式的實質(zhì):就是把一個變量的地址放在另一個變量中.如圖二:;a; 如圖二:在內(nèi)存的另一些單元中設置一些變量,pa,pb,…,pf,分別用來存放變量a,b,…f的地址(即&a,&b,…,&f)。得到pa的值1010(它是變量a的地址),再通過地址1010找到它所指向的存儲單元中的值3。 根據(jù)圖二所示的邏輯關系,可以將它們形象的表示為圖三,即一個變量指向另一個變量。在C語言中用”指針“來表示指向關系。所以,所謂“指針”就是地址。一個變量的指針就是指該變量的地址。存放地址的變量,就是指針變量。 如:圖二中的pa,pb,…,pf均是指針變量,而從圖三可以看出,指針變量pa指向a,我們在理解“指向”的時候,應該理解它指的是:pa中存有a的地址,通過該地址就能找到a。;7.1.2 指針的類型和指針的定義指針是具有類型的,它的類型就是它所指向?qū)嶓w的類型。如:一個指向int類型的指針,一個指向一維數(shù)組的指針等。注意:1。在使用一個指針變量之前,先要用聲明語句對其定義。 如:int *p;解析:定義了一個指向整型數(shù)據(jù)的指針變量p,即p是一個存放 整型變量的地址變量。2。定義一個指針變量必須用符號“*”,它表明其后的變量是指針變量,但千萬要記住指針變量是“p”,而不是“p”。;3。在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配一個存儲單元,用來存放地址(如:int *p),但此時該指針變量并未指向確定的整型變量,因為該指針變量中并未輸入確定的地址。要想使一個指針變量指向一個整型變量,必須將整型變量的地址賦給該指針變量。如:int *p,i=3; p=&i;解析:上面先定義了一個指針變量p和一個整型變量i,i的初值為3,但此時p與i無任何關系,如圖a: 然后執(zhí)行賦值語句“p=&i;”,此時p就指向了i。見圖b.;4。指針變量也可以定義為指向?qū)嵭?#xff0c;字符型以及其它類型的變量。 如:float *p; char *q;7.1.3 指針變量的引用 1。指針變量的引用形式:;(2)在程序的執(zhí)行語句中引用的“*”是一個指針運算符,如*p 表示“p指向的變量”。【例1】:用指針變量進行輸入、輸出。 main() {int *p, m; scanf(“%d”,&m); p=&m printf(“%d\n”,*p); };【例2】:說出下列程序的功能。main(0{int *p1, *p2, i1, i2; scanf(“%d,%d”,&i1,&i2); p1=&i1; p2=&i2; printf(“%d,%d\n”,*p1,*p2); p2=p1; printf(“%d,%d\n”,*p1,*p2);}運行情況:假設鍵盤輸入為:10,20
總結
以上是生活随笔為你收集整理的全国计算机二级考试c语言指针,全国计算机二级考试C语言 指针精讲课件.ppt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言数据库线程池,C语言多线程中运行线
- 下一篇: c语言线程面试题,java多线程面试题