資源描述:
《C語言程序設計之入門課程ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、程序設計與實踐C第4集指針與鏈表地址和指針的概念內(nèi)存區(qū)的每一個字節(jié)有一個編號,這就是“地址”。如果在程序中定義了一個變量,在對程序進行編譯時,系統(tǒng)就會給這個變量分配內(nèi)存單元。1、按變量地址存取變量值的方式稱為“直接訪問”方式printf(″%d″,i);scanf(″%d″,&i);k=i+j;2.另一種存取變量值的方式稱為“間接訪問”的方式。即,將變量i的地址存放在另一個變量中。在C語言中,指針是一種特殊的變量,它是存放地址的。一個變量的地址稱為該變量的“指針”。例如,地址2000是變量i的指針。如果有一個變量專門用來存放另一變量的地址(即指針
2、),則它稱為“指針變量”。上述的i_pointer就是一個指針變量。指針和指針變量的定義:變量的指針和指向變量的指針變量怎樣定義指針變量定義指針變量的一般形式為基類型*指針變量名;下面都是合法的定義:float*pointer_3;char*pointer_4;可以用賦值語句使一個指針變量得到另一個變量的地址,從而使它指向一個該變量。例如:pointer_1=&i;pointer_2=&j;在定義指針變量時要注意兩點:指針變量前面的“*”,表示該變量的類型為指針型變量。例:float*pointer_1;指針變量名是pointer_1,而不是*p
3、ointer_1。(2)在定義指針變量時必須指定基類型。需要特別注意的是,只有整型變量的地址才能放到指向整型變量的指針變量中。下面的賦值是錯誤的∶floata;int*pointer_1;pointer_1=&a;在對指針變量賦值時需要注意兩點:⑴指針變量中只能存放地址(指針),不要將一個整數(shù)賦給一個指針變量。例:pointer_1=100;/*pointer_1是指針變量,100是整數(shù),不合法*/(2)賦給指針變量的是變量地址不能是任意的類型,而只能是與指針變量的基類型具有相同類型的變量的地址。在引用指針變量時,可能有三種情況:⑴給指針變量賦值
4、。如:p=&a;⑵引用指針變量的值。如:printf(“%o”,p);⑶引用指針變量指向的變量。有關(guān)的兩個運算符:&取地址運算符。&a是變量a的地址。*指針運算符(或稱“間接訪問”運算符),*p是指針變量p指向的對象的值。怎樣引用指針變量例10.1通過指針變量訪問整型變量#includevoidmain(){inta,b;int*pointer_1,*pointer_2;a=100;b=10;pointer_1=&a;/*把變量a的地址賦給pointer_1*/pointer_2=&b;/*把變量b的地址賦給pointer_2
5、*/printf(″%d,%dn″,a,b);printf(″%d,%dn″,*pointer_1,*pointer_2);}通過指針引用數(shù)組一個變量有地址,一個數(shù)組包含若干元素,每個數(shù)組元素都在內(nèi)存中占用存儲單元,它們都有相應的地址。指針變量既然可以指向變量,當然也可以指向數(shù)組元素(把某一元素的地址放到一個指針變量中)。所謂數(shù)組元素的指針就是數(shù)組元素的地址。數(shù)組元素的指針可以用一個指針變量指向一個數(shù)組元素。例如:inta[10];(定義a為包含10個整型數(shù)據(jù)的數(shù)組)int*p;(定義p為指向整型變量的指針變量)p=&a[0];(把a[0]
6、元素的地址賦給指針變量p)也就是使p指向a數(shù)組的第0號元素。C語言規(guī)定在指針指向數(shù)組元素時,可以對指針進行以下運算:加一個整數(shù)(用+或+=),如p+1減一個整數(shù)(用-或-=),如p-1自加運算,如p++,++p自減運算,如p--,--p兩個指針相減,如p1-p2(只有p1和p2都指向同一數(shù)組中的元素時才有意義)。指針的運算分別說明如下:如果指針變量p已指向數(shù)組中的一個元素,則p+1指向同一數(shù)組中的下一個元素,p-1指向同一數(shù)組中的上一個元素。(2)如果p原來指向a[0],執(zhí)行++p后p的值改變了,在p的原值基礎(chǔ)上加d,這樣p就指向數(shù)組的下一個元素
7、a[1]。(3)如果p的初值為&a[0],則p+i和a+i就是數(shù)組元素a[i]的地址,或者說,它們指向a數(shù)組的第i個元素。*(p+i)或*(a+i)是p+i或a+i所指向的數(shù)組元素,即a[i]。(5)如果指針變量p1和p2都指向同一數(shù)組,如執(zhí)行p2-p1,結(jié)果是兩個地址之差除以數(shù)組元素的長度。通過指針引用數(shù)組元素引用一個數(shù)組元素,可以用:(1)下標法,如a[i]形式;(2)指針法,如*(a+i)或*(p+i)。其中a是數(shù)組名,p是指向數(shù)組元素的指針變量,其初值p=a。例10.5輸出數(shù)組中的全部元素假設有一個a數(shù)組,整型,有10個元素。要輸出各元素
8、的值有三種方法:(1)下標法#includevoidmain(){inta[10];inti;for(i=0;i<10