网站大量收购独家精品文档,联系QQ:2885784924

第3章 指标与字串(Pointers and Strings)课程.ppt

第3章 指标与字串(Pointers and Strings)课程.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 指標與字串(Pointers and Strings) 3-1 C語言的指標 3-2 指標與陣列 3-3 指標與結構 3-4 指標與字串 3-5 指標的應用 - 字串處理 3-1 C語言的指標 3-1-1 指標變數的使用 3-1-2 指向指標的指標變數 3-1 C語言的指標 C語言的「指標」(Points)屬於一種低階的程式處理功能,可以直接存取記憶體位址,指標變數的變數內容並不是字元或數值等基本資料型態的值,而是其它變數的「位址」(Address)。 換句話說,單獨存在的指標變數並沒有意義,因為它的值是其它變數的位址,程式需先宣告其它變數,才能取得指標變數的值,即指向其它變數的儲存位址。 3-1-1 指標變數的使用-說明 C語言的「指標變數」(Pointer Variables)是一種變數,其變數值是其它變數的位址(Address),如下圖所示: 3-1-1 指標變數的使用-宣告 指標變數的宣告和基本資料型態變數的宣告稍有不同,其宣告格式,如下所示: 資料型態 *變數名稱; 指標變數宣告和變數宣告只差變數名稱前的「*」星號,簡單的說,這個變數是指向宣告資料型態的指標變數,例如:指向整數int的指標變數宣告,如下所示: int *ptr; 3-1-1 指標變數的使用-取得變數位址 將指標變數ptr指向變數j的位址,取得變數位址是使用單運算元的「」取址運算子,如下所示: ptr = j; 3-1-1 指標變數的使用-初值 指標變數也可以在宣告時指定初值,不過取得位址的變數一定需要在指標變數前宣告,如下所示: int i; int *ptr1 = i; 上述程式碼先宣告整數變數i,然後是指標變數ptr1,指標變數的初值是變數i的位址。 因為C語言的指標變數並沒有預設值,為了避免程式錯誤,例如:尚未指向其它變數的位址就使用指標變數,可以在宣告時指定成NULL常數,如下所示: int *ptr = NULL; 3-1-1 指標變數的使用-取得變數值 在C程式取得指標變數指向的變數值是使用單運算元的「*」星號運算子,稱為「取值」(Indirection)或「解參考」(Dereferencing)運算子,例如:ptr是指向整數變數j的指標變數,*ptr就是變數j的值,如下所示: printf(*ptr :位址%p的值=%d\n, ptr, *ptr); 上述printf()函數使用%p格式字元顯示指標變數的值,ptr是變數j的位址,*ptr是變數j的值。 3-1-2 指向指標的指標變數-說明 指向指標的指標變數是說指標變數是指向其它的指標變數。首先在程式宣告一個整數和指標變數,如下所示: int i = 5; int *ptr = i; 接著再宣告一個指向指標的指標變數,如下所示: int **ptr1 = ptr; 指標變數ptr1共有2個星號,第1個星號指出變數是一個指標變數,第2個星號表示它是指向指標變數,即ptr。接著再宣告指標變數指向指標的指標變數,如下所示: int ***ptr2 = ptr1; 指標變數ptr2共有3個星號,第1個星號指出變數是指標變數,後2個星號表示它是指向指標的指標變數,即ptr1。 3-1-2 指向指標的指標變數-圖例 3-2 指標與陣列 3-2-1 指標與陣列 3-2-2 指標與二維陣列 3-2-3 指標陣列 3-2-1 指標與陣列-說明 C語言的陣列配置的是一塊連續的記憶體空間,然後使用索引值存取陣列元素,如果改成指標變數,只需將指標變數指向陣列的第1個元素,元素存取就可以使用指標的數運算加和減來完成。 3-2-1 指標與陣列-指向陣列元素 宣告指標變數指向陣列的第1個元素,如下所示: int *ptr = array; C語言的陣列名稱就是陣列第1個元素的位址,因為陣列名稱本身是一個指標變數,如果使用取址運算子「」,其程式碼如下所示: ptr = array[0]; 3-2-1 指標與陣列-走訪陣列(方法1) 一共有2種方法存取其它陣列元素的值,如下所示: for ( i = 0; i LEN; i++ ) printf(ptr+%d=%d , i, *(ptr+i)); 3-2-1 指標與陣列-走訪陣列(方法2) 第2個方法是使用指標變數的遞增運算ptr++,如下所示: for ( i = 0; i LEN; i++ ) printf(ptr+%d=%d , i, *ptr++); 上述for迴圈使用指標走訪陣列元素,指標運算ptr++移到下一個元素,元素值是取值運算*(ptr++),這個方法會真正移動指標變數的位址,等到執行完迴圈,指標變數ptr是指向陣列的最後1個元素。 3-2-2 指標與二維陣列-範例 C語言的二維陣列也可以使用指標變數來存取陣列

文档评论(0)

hushuidhd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档