《編程基礎(chǔ)-C語言》項目八 利用指針靈活處理程序_第1頁
《編程基礎(chǔ)-C語言》項目八 利用指針靈活處理程序_第2頁
《編程基礎(chǔ)-C語言》項目八 利用指針靈活處理程序_第3頁
《編程基礎(chǔ)-C語言》項目八 利用指針靈活處理程序_第4頁
《編程基礎(chǔ)-C語言》項目八 利用指針靈活處理程序_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

項目一利用指針靈活處理程序任務(wù)24按大小順序輸出數(shù)值——指針和指針變量任務(wù)25逆序輸出——指針與數(shù)組任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)任務(wù)描述:輸入a和b兩個整數(shù),要求使用指針按由大到小的順序輸出a和b。任務(wù)24按大小順序輸出數(shù)值——指針和指針變量案例分析:用指針方法來處理這個問題。不交換整型變量的值,而是交換兩個指針變量的值。8.1指針和指針變量指針:存儲空間的首地址也就是變量的地址形象化地稱為“指針”。指針變量:專門用來存放指針的變量,稱為“指針變量”知識準備:指針和指針變量的概念任務(wù)24按大小順序輸出數(shù)值——指針和指針變量2.定義指針變量定義指針變量的一般形式為:類型名*指針變量名;如:int*pa;char*pb;任務(wù)24按大小順序輸出數(shù)值——指針和指針變量3.指針變量的操作(1)指針操作的運算符取地址運算符“&”取值運算符“*”(或稱“間接訪問”運算符)(2)指針變量的引用任務(wù)24按大小順序輸出數(shù)值——指針和指針變量給指針變量賦值,如:p=&a;

//把a的地址賦給指針變量p引用指針變量指向的變量。如果已執(zhí)行“p=&a;”,即指針變量p指向了整型變量a,則printf("%d",*p);引用指針變量的值,如:printf("%o",p);(3)指針的運算任務(wù)24按大小順序輸出數(shù)值——指針和指針變量賦值運算通過賦值表達式,將同類型的變量地址賦給指針,如:intk,*r,*s=&k;r=s; /*指針r、,s同時指向變量k*/算術(shù)運算(加減運算)指針的運算包括增/減量運算,通常用于指向數(shù)組元素的指針變量。指針運算的增/減量的單位是1。關(guān)系運算與普通變量一樣,指針可以進行關(guān)系運算,指向同一數(shù)組的兩個指針變量進行關(guān)系運算時可表明它們所指數(shù)組元素之間的關(guān)系。任務(wù)實施:#include<stdio.h>main(){ int*p1,*p2,*p,a,b; printf("請輸入兩個整數(shù):");

scanf("%d%d",&a,&b); p1=&a; p2=&b; if(a<b) {p=p1;p1=p2;p2=p;} printf("a=%d,b=%d\n",a,b); printf("max=%d,min=%d\n",*p1,*p2);}任務(wù)24按大小順序輸出數(shù)值——指針和指針變量運行結(jié)果:任務(wù)24按大小順序輸出數(shù)值——指針和指針變量任務(wù)總結(jié):a和b的值并未交換,它們?nèi)员3衷担玴1和p2的值改變了。p1的值原為&a,后來變成&b,p2原值為&b,后來變成&a。這樣在輸出*pl和*p2時,實際上是輸出變量b和a的值,所以先輸出9,然后輸出5。任務(wù)24按大小順序輸出數(shù)值——指針和指針變量任務(wù)拓展:任務(wù)24按大小順序輸出數(shù)值——指針和指針變量以下程序運行后的輸出結(jié)果是什么?#include<stdio.h>main(){ intm=1,n=2; int*p=&m,*q=&n,*r; r=p;p=q;q=r; printf("%d,%d,%d,%d\n",m,n,*p,*q);}任務(wù)25逆序輸出——指針與數(shù)組任務(wù)描述:從鍵盤輸入10個整數(shù),要求使用指針將10個元素逆序輸出。案例分析:使用數(shù)組a[10]存放輸入的10個整數(shù)指針變量p輸出數(shù)組元素時,先將指針p指向數(shù)組的最后一個元素在循環(huán)中用p—實現(xiàn)指針從數(shù)組的最后一個元素逐步移動到第一個元素實現(xiàn)數(shù)組元素的逆序輸出。任務(wù)25逆序輸出——指針與數(shù)組8.2指針與數(shù)組知識準備:1.指向一維數(shù)組的指針指針變量可以指向數(shù)組或數(shù)組元素,即把數(shù)組的起始地址或某個元素的地址存放到一個指針變量中。2.指向二維數(shù)組的指針C語言并沒有真正意義上的二維數(shù)組,在C語言中,二維數(shù)組的實現(xiàn),只是簡單地通過“線性擴展”的方式進行的任務(wù)25逆序輸出——指針與數(shù)組3.指向字符串的指針在C語言中,字符串是用字符數(shù)組來存放的。因此在對字符串操作時,可以定義字符數(shù)組,也可以定義字符指針(指向字符型數(shù)據(jù)的指針)來存取所需字符任務(wù)25逆序輸出——指針與數(shù)組任務(wù)實施:#include<stdio.h>main(){ inta[10],i,*p; printf("請輸入10個整數(shù):");

for(i=0;i<=9;i++) scanf("%d",a+i); printf("逆序輸出這10個數(shù):");

for(p=a+9;p>=a;p--) printf("%d",*p); printf("\n");}任務(wù)25逆序輸出——指針與數(shù)組運行結(jié)果:任務(wù)25逆序輸出——指針與數(shù)組任務(wù)總結(jié):使用指針變量p來指向元素,用p++使p的值不斷改變從而指向不同的元素,這種有規(guī)律地改變地址值(p++)能大大提高執(zhí)行效率。p++表示p所指向的元素值加1。任務(wù)拓展:編寫程序輸出以下圖形。123452345345455任務(wù)25逆序輸出——指針與數(shù)組任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)任務(wù)描述:輸入兩個整數(shù),按先大后小的順序輸出,要求用函數(shù)處理,而且用指針類型的數(shù)據(jù)作函數(shù)參數(shù)。案例分析:定義一個函數(shù)swap將指向兩個整型變量的指針變量(內(nèi)放兩個變量的地址)作為實參傳遞給swap函數(shù)的形參指針變量在函數(shù)中通過指針實現(xiàn)交換兩個變量的值注意是交換a和b的值,而指針p1和p2的值不變。任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)8.3指針與函數(shù)知識準備:1.指針變量作為函數(shù)參數(shù)指針變量的值是一個地址,指針變量作函數(shù)參數(shù)時,傳遞的是-個指針變量的值,但這個值是另外-個變量的地址,因此,這種把變量的地址傳遞給被調(diào)用函數(shù)的方式稱為“傳遞地址”方式。任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)8.3指針與函數(shù)知識準備:2.返回指針值的函數(shù)任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)指針函數(shù)的一般定義形式為:類型標識符*函數(shù)名(形參表){函數(shù)體}其中“類型標識符”表示函數(shù)返回的指針所指向的類型,函數(shù)名前的“*”表示此函數(shù)的返回值是指針值。3.指向函數(shù)的指針任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)與數(shù)組指針一樣,使用小括號將函數(shù)和前邊的星號括起來,就是一個函數(shù)指針:指針函數(shù)—>int*p();函數(shù)指針

—>int(*p)();任務(wù)實施:任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)#include<stdio.h>main(){swap(int*p1,int*p2);inta,b;int*pointer_1,*pointer_2;printf(’“請輸入

a和

b的值:”);scanf(“%d,%d”,&a,&b);pointer_1=&a;pointer_2=&b;if(a<b)swap(pointer_1,pointer_2);printf("max=%d,min=%d\n",a,b);}voidswap(int*p1,int*p2){inttemp;temp=*pl;*p1=*p2;*p2=temp;}運行結(jié)果:任務(wù)26使用函數(shù)順序輸出——指針與函數(shù)請輸入a和b的值:5,9max=9,min=5任務(wù)總結(jié):執(zhí)行swap函數(shù)后,變量a和b的值改變了,這個改變不是通過將形參傳回實參來改變的。不能企圖通過改變指針形參的值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論