- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指位器的指位器
指標 (Pointer) 指 標 (Pointer) 指標變數所存放的內容為記憶體位置,而指標變數在記憶體中佔幾個記憶體位元組,則視所使用的語言系統而定,以Turbo C而言是2個位元組. 宣告指標變數時,需在變數名稱前加個 * 號以玆識別. * 號除了在指標變數宣告時使用外,最主要是用來存取pointer所指到的變數值. 例: *pa=0; [ 將0存入pa所指的變數內 ] y=*pa; [ 取pa所指的變數值(0),再設給y ] pa=x; [ 以符號取得x的位址,存入pa(把pa指向x) ] y=*pa; [ 把pa所指的變數存入y ] 若指標沒指到任何一個位置,其初值要設為NULL,NULL在stdlib.h,stdio.h,stddef.h,mem.h,alloc.h的標頭檔皆有定義. 指 標 (Pointer) 範例二: 指標的應用 #includestdio.h main() { int a=3,b=4; int *fp; printf(The original values are: a=%d , b=%d \n , a , b ); printf(The Address are : a=0x%p , b=0x%p \n, a , b ); fp=a; *fp=100; printf( passing *fp=100 , a value change=%d \n , a ); fp=b; printf(passing fp=b , fp value change=%d\n, *fp ); } 以指標來傳引數 範例三:設計一個傳值函式noswap(),及一個傳址函式swap(), 將從主程式傳來的兩個正數引數值互相對調 #includestdio.h main() { int x=2,y=3; void noswap(int a , int b ); void swap( int *a , int *b ); printf(The original values are: x=%d , y=%d \n , x , y ); noswap(x,y); printf(The x y are changed : x=%d , y=%d \n, x , y ); swap(x,y); printf(The x y are changed : x=%d , y=%d \n, x , y ); } 以指標來傳引數 接上頁(範例三) void noswap ( int a , int b ) { int t; t=a; a=b; b=t; } void swap ( int *a , int *b) { int t; t=*a; *a=*b; *b=t; } 以指標來傳引數 範例四: 指標以位址傳遞(call by address) #includestdio.h main() { int a=1,b=2,*p,*q; void sub( int ** , int ** ); p=a; q=b; sub(p,q); printf(a=%d b=%d \n , *p , *q ); } void sub ( int **x , int **y ) { *x=*y; } 指標與陣列的關係 指標與陣列的關係 範例五: 用指標取出陣列元素的位址 #includestdio.h main() { int i; char *pa; char a[4]={A,B,C,D}; pa=a; for(i=0;i4;i++) printf(a[%d] value:%c ; *(pa+%d) value:%c\n,i,a[i],i,*(pa+i)); for(i=0;i4;i++) printf([%d] address:%x ; *(pa+%d) address:%x\n,i,a[i],i,pa+i); } 指標與陣列的關係 範例七: 將數字由小到大排序(選擇排序法). #includestdio.h main() { void swap(int *a,int *b); void printArray(int n,int a[]); int a[] = {32,43,12,7,52,95,66,28}; int i,j,min,t; printf(The original Array:); printArray(8,a); for(i=0;i
文档评论(0)