freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第7章間接訪問—指針(編輯修改稿)

2024-11-16 22:18 本頁面
 

【文章內(nèi)容簡介】 mp。x1, amp。x2) ? 函數(shù)的參數(shù)有兩類:輸入?yún)?shù)和輸出參數(shù)。一般,輸入?yún)?shù)用值傳遞,輸出參數(shù)用指針傳遞。在參數(shù)表中,輸入?yún)?shù)放在前面,輸出參數(shù)放在后面。 《 程序設計 》 程序設計 49 原型的改進 ? 并不是每個一元二次方程都有兩個不同根,有的可能有兩個等根,有的可能沒有根。函數(shù)的調(diào)用者如何知道 x1和 x2中包含的是否是有效的解? ? 解決方案:讓函數(shù)返回一個整型數(shù)。該整型數(shù)表示解的情況 《 程序設計 》 程序設計 50 完整的函數(shù) int SolveQuadratic(double a,double b,double c, double *px1,double *px2) { double disc, sqrtDisc。 if(a == 0) return 3。 //不是一元二次方程 disc = b * b 4 * a * c。 if( disc 0 ) return 2。 //無根 if ( disc == 0 ) { *px1 = b /(2 * a)。 return 1。} //等根 //兩個不等根 sqrtDisc = sqrt(disc)。 *px1 = (b + sqrtDisc) / (2 * a)。 *px2 = (b sqrtDisc) / (2 * a)。 return 0。 } 《 程序設計 》 程序設計 51 函數(shù)的調(diào)用 int main() { double a,b,c,x1,x2。 int result。 cout 請輸入 a,b,c: 。 cin a b c。 result = SolveQuadratic(a, b, c, amp。x1, amp。x2)。 switch (result) { case 0: cout 方程有兩個不同的根: x1 = x1 x2 = x2。 break。 case 1: cout 方程有兩個等根: x1。 break。 case 2: cout 方程無根 。 break。 case 3: cout 不是一元二次方程 。 } return 0。 } 《 程序設計 》 程序設計 52 指針作為函數(shù)參數(shù)和返回值 ? 指針作為函數(shù)參數(shù) ? 數(shù)組名作為函數(shù)參數(shù) ? 返回指針的函數(shù) ? 引用和引用傳遞 ? 返回引用的函數(shù) 《 程序設計 》 程序設計 53 數(shù)組傳遞的進一步討論 ? 數(shù)組傳遞的本質(zhì)是地址傳遞,因此形參和實參可以使用數(shù)組名,也可以使用指針。 ? 數(shù)組傳遞是函數(shù)原型可寫為: type fun(type a[], int size)。 也可寫為 type fun(type *p, int size)。 但在函數(shù)內(nèi)部, a和 p都能當作數(shù)組使用 ? 調(diào)用時,對這兩種形式都可用數(shù)組名或指針作為實參 ? 建議:如果傳遞的是數(shù)組,用第一種形式;如果傳遞的是普通的指針,用第二種形式 《 程序設計 》 程序設計 54 include iostream using namespace std。 void f(int arr[], int k) {cout sizeof(arr) sizeof(k) endl。 } void main() { int a[10]={1,2,3,4,5,6,7,8,9,0}。 cout sizeof(a) endl。 f(a,10)。 } 輸出: 40 4 4 C++將數(shù)組名作為參數(shù)傳遞處理成指針的傳遞 即在 main中, a是數(shù)組,占用了 40個字節(jié)。而在函數(shù) f中,arr是一個指針 《 程序設計 》 程序設計 55 數(shù)組傳遞的靈活性 void sort(int p[ ] , int n) {...} main() {int a[100]。 ... sort(a, 100)。 //排序整個數(shù)組 sort(a, 50)。 //排序數(shù)組的前 50個元素 sort(a+50, 50)。 //排序數(shù)組的后 50個元素 ... } 《 程序設計 》 程序設計 56 實例 ? 設計一函數(shù)用分治法在一個整數(shù)數(shù)組中找出最大和最小值 ? 具體方法是: ? 如果數(shù)組只有一個元素,則最大最小都是他。 ? 如果數(shù)組中只有兩個元素,則大的一個就是最大數(shù),小的就是最小數(shù)。這種情況不需要遞歸。 ? 否則,將數(shù)組分成兩半,遞歸找出前一半的最大最小值和后一半的最大最小值。取兩個最大值中的較大者作為最大值,兩個最小值中的較小值作為最小值。 《 程序設計 》 程序設計 57 設計考慮 ? 函數(shù)的參數(shù)是要查找的數(shù)組,傳遞一個數(shù)組要兩個參數(shù):數(shù)組名和數(shù)組規(guī)模 ? 函數(shù)返回的是數(shù)組中的最大值和最小值,將它們作為指針傳遞的參數(shù) ? 查找數(shù)組的前一半就是遞歸調(diào)用本函數(shù),傳給他的參數(shù)是當前的數(shù)組名,數(shù)組的規(guī)模是原來的一半 ? 查找數(shù)組的后一半也是遞歸調(diào)用本函數(shù),傳給它的參數(shù)是數(shù)組后一半的起始地址,規(guī)模也是原來的一半 《 程序設計 》 程序設計 58 偽代碼 void minmax ( int a[ ] , int n , int *min_ptr , int *max_ptr) { switch (n) { case 1: 最大最小都是 a[0]。 case 2: 大的得放入 *max_ptr,小的放入 *min_ptr; Default: 對數(shù)組 a的前一半和后一般分別調(diào)用 minmax; 取兩個最大值中的較大者作為最大值; 取兩個最小值中的較小值作為最小值 } } 《 程序設計 》 程序設計 59 void minmax ( int a[] , int n , int *min_ptr , int *max_ptr) { int min1 , max1 , min2 , max2。 switch(n) { case 1: *min_ptr = *max_ptr = a[0]。 return。 case 2: if (a[0] a[1] ) { *min_ptr = a[0]。 *max_ptr= a[1]。 } else { *min_ptr = a[1]。 *max_ptr= a[0]。} return。 default: minmax( a, n/2, amp。min1, amp。max1 )。 minmax( a + n/2, n n / 2, amp。min2, amp。max2 )。 if (min1 min2) *min_ptr = min1。 else *min_ptr = min2。 if (max1 max2) *max_ptr = max2。 else *max_ptr = max1。 return。 } } 《 程序設計 》 程序設計 60 指針作為函數(shù)參數(shù)和返回值 ? 指針作為函數(shù)參數(shù) ? 數(shù)組名作為函數(shù)參數(shù) ? 返回指針的函數(shù) ? 引用和引用傳遞 ? 返回引用的函數(shù) 《 程序設計 》 程序設計 61 返回指針的函數(shù) ? 函數(shù)的返回值可以是一個指針 ? 返回指針的函數(shù)原型: 類型 *函數(shù)名(形式參數(shù)表); ? 當函數(shù)的返回值是指針時,返回地址對應的變量不能是局部變量。 《 程序設計 》 程序設計 62 實例 ? 設計一個函數(shù)從一個字符串中取出一個子串。 ? 原型設計: ? 從哪一個字符串中取子串、起點和終點 ? 返回值:字符串可以用一個指向字符的指針表示,所以函數(shù)的執(zhí)行結(jié)果是一個字符串,表示一個字符串可以用一個指向字符的指針 ? 返回值指針指向的空間必須在返回后還存在。這可以用動態(tài)字符數(shù)組 《 程序設計 》 程序設計 63 char *subString(char *s, int start, int end) { int len = strlen(s)。 if (start 0 || start = len || end 0 || end = len || start end) { cout 起始或終止位置錯 endl。 return NULL。 } char *sub = new char[end start + 2]。 strncpy(sub, s + start, end start +1)。 sub[end start +1] = 39。\039。 return sub。 } 《 程序設計 》 程序設計 64 指針作為函數(shù)參數(shù)和返回值 ? 指針作為函數(shù)參數(shù) ? 數(shù)組名作為函數(shù)參數(shù) ? 返回指針的函數(shù) ? 引用和引用傳遞 ? 返回引用的函數(shù) 《 程序設計 》 程序設計 65 引用傳遞 ? 引用傳遞是地址傳遞的另一種更簡單明了的實現(xiàn)方法 引用的概念 函數(shù)中的引用 《 程序設計 》 程序設計 66 C++中的引用 ? 引用的定義:給一個變量取一個別名 ,使一個內(nèi)存單元可以通過不同的變量名來訪問。 例: int i。 int amp。j=i。 j是 i的別名, i與 j是同一個內(nèi)存單元。 ? C++引入引用的主要目的是將引用作為函數(shù)的參數(shù)。 《 程序設計 》 程序設計 67 引用傳遞 ? 引用傳遞是地址傳遞的另一種更簡單明了的實現(xiàn)方法 引用的概念 函數(shù)中的引用 《 程序設計 》 程序設計 68 引用參數(shù) ? C++引入引用的主要目的是將引用作為函數(shù)的參數(shù)。 指針參數(shù) void swap(int *m, int *n) { int temp。 temp=*m。 *m=*n。 *n=temp。 } 調(diào)用: swap(amp。x, amp。y) 引用參數(shù) void swap(int amp。m, int amp。n) {int temp。 temp
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1