- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指标变数的宣告和初始化
Chapter 5 – 指標和字串 5.1 簡介 指標 功能強大、但很難完全掌握 可模擬傳參照呼叫方式 與陣列、字串的關係很密切 可以執行動態資料結構, 例如:linked lists(鏈結串列), queues(佇列), stacks(堆疊) and trees(樹). 第5章會談到 pointers with structures 的用法。 第9、10章談到用 pointers 與 references 的物件導向程式設計 15章介紹動態記憶體管理的方式 5.2 指標變數宣告與初始化 指標變數 其內容是「記憶體位址」 一般變數內容是某個值(直接存取) 指標內含某個有特殊值之變數的位址(間接存取) Indirection 間接 存取一指標的值 指標變數的宣告 - 使用之間必須先宣告 * 表示該變數是一個指標變數 int *myPtr, myData;//myData 是整數變數 宣告指向 int 的指標,也就是型態為 int * 的指標 一個宣告敘述要宣告多個指標時,要寫多個 * int *myPtr1, *myPtr2; 5.2 指標變數宣告與初始化 可以宣告指向任何資料型態的指標 指標的初始化 可初始化為 0, NULL, 或一個位址 0 或 NULL 表示不指向任何東西 良好的程式設計習慣5.1 讓所取的指標變數包含有 Ptr 的字樣,可以更清楚地表達這些變數是指標,而不是一般變數,需要適當地處理。 測試和除錯的小技巧 5.1 對指標作初值化,可避免指標指到未知或未初始化的記憶體。 5.3 指標運算子 (address operator、定址運算子) 傳回運算元位址的單元運算子 例如 int y = 5;int *yPtr;yPtr = y; // yPtr 拿到 y 的位址 yPtr “指向” y 5.3 指標運算子 * (indirection/dereferencing 運算子) 傳回運算元所指到的記憶體內容 前面的例子中 *yPtr 就傳回 y (因為 yPtr 指向 y). * 可用來將某個值存到指標所指向的記憶體中 *yPtr = 7; // 將 7 存到 y 中 被 * 運算的指標一定要是 lvalue(不可是數值) * 與 是相反的運算 會互相抵銷 *myVar == myVar 與 *yPtr == yPtr 1. Declare variables 2 Initialize variables 3. Print Program Output 5.3 指標運算子 常見的程式設計錯誤 5.2~5.4 透過未適當初始化的指標來、或未指向適當位址的指標來存取,都可能產生執行時期的致命錯誤,或者可能會無意修改到重要資料,或者執行結束但得到錯誤的結果。 嘗試對非指標變數作 dereference 為語法錯誤。 對指向 0 的指標作 dereference 通常都是致命的執行錯誤 可攜性的小技巧 5.1 指標的輸出格式與電腦系統有關,有些是以十六進位整數輸出、有些以十進位整數輸出。 5.4 利用參照呼叫函式 C++ 有三種傳參數的方法 用指標引數作 call by reference 用 傳遞引數的位址 允許函式改變引數的內容(因為知道該引數的位址) 傳陣列時不需寫 ,因為陣列名稱就是記憶體位址 在函式中用 * 來存取參數內容 void doubleNum( int *number ) { *number = 2 * ( *number );} *number 代表傳入函式中的引數內容 呼叫函式時,必須傳入記憶體位址 doubleNum( myNum ); fig05_06.cpp(1 of 2) 1 // Fig. 5.6: fig05_06.cpp 2 // Cube a variable using pass-by-value. 3 #include iostream 5 using std::cout; 6 using std::endl; 8 int cubeByValue( int ); // prototype 10 int main() 11 { 12 int number = 5; 14 cout The original value of number is number; 17 number = cubeByValue( number ); 19 cout \nThe new value of number is number
您可能关注的文档
最近下载
- 道德与法治六年级上册第四单元 法律保护我们健康成长 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 论实验动物的质量管理与控制.docx VIP
- (2024秋新版)北师大版一年级数学上册《可爱的校园》PPT课件.pptx VIP
- 《批判与创意思考》 教材配套PPT 第三章 是什么阻碍了你的思考.pptx VIP
- 麻疹病例教育课件.pptx VIP
- 第九章 冷热疗法课件.ppt VIP
- 2025年秋季新教材部编版小学道德与法治二年级上册全册道法最新教案(教学设计).docx
- 《旅游地理学》全套教学课件.ppt
- 汇德大厦材料二次转运方案.pdf VIP
- 城市公共空间设计教学提纲.ppt VIP
文档评论(0)