資料!你家住哪裏? --談指標 2008.12. 綠園.

Slides:



Advertisements
Similar presentations
C++语言程序设计教程 第5章 构造数据类型 第6章 C++程序的结构.
Advertisements

这是一个数字的 乐园 这里埋藏着丰富的 宝藏 请跟我一起走进数学的 殿堂.
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
第 2 章 初探 C++.
四資二甲 第三週作業 物件導向程式設計.
您買美元了嗎? 退休規劃 全球外幣保單.
2016中重卡网络规划 中重卡营销部 2016年6月.
1.1.2 四 种 命 题.
教師敘薪實務解說 大墩國小人事室 吳莉真
高级语言程序设计 C++程序设计教程(下) 2006年春季学期 与一些教材的区别 偏重理论,不去讨论某个系统的具体使用方法,但会涉及实现技术
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
第八章二元一次方程组 8.3实际问题与二元一次方程组.
第八章二元一次方程组 8.3实际问题与二元一次方程组 (第3课时).
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
第5章 函数与模块化设计 学习目的与要求: 掌握函数的定义及调用方法 理解并掌握参数的传递方法 理解函数的嵌套与递归调用
struct 可以在同一個名稱下擁有多種資料型態。使用struct能讓資料的存取和處理更為靈活。
選擇排序法 通訊一甲 B 楊穎穆.
資料大樓 --談指標與陣列 綠園.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
函數(一) 自訂函數、遞迴函數 綠園.
教材 《C++程序设计》.谭浩强. 清华大学出版社 王雪晶
C 程式設計— 指標.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
Object-Oriented Programming in C++ 第一章 C++的初步知识
程序设计期末复习 黎金宁
第12章 從C到C++語言 12-1 C++語言的基礎 12-2 C++語言的輸出與輸入 12-3 C++語言的動態記憶體配置
程式撰寫流程.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
谭浩强 编著 中国高等院校计算机基础教育课程体系规划教材 C++程序设计.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
Introduction to the C Programming Language
东北林业大学 陈宇 ACM程序设计 东北林业大学 陈宇
序及第0章.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
六、函数 教学目标: 函数的概念、定义、调用和返回 带自定义函数的程序设计 递推算法 递归思想及算法实现 函数的参数传递方式 C语言程序设计.
共有六個運算性質 包括它的證明以及相關題型
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
第二章 基本数据类型及运算 C数据类型概述 基本数据类型 运算符和表达式 混合运算与类型转换 数据的输入输出 顺序程序设计举例.
C++语言程序设计 C++语言程序设计 第五章 函数 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
Introduction to the C Programming Language
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
第二章 类型、对象、运算符和表达式.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Introduction to the C Programming Language
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
智慧財產權管理講次36 積體電路電路布局保護法(1) 主講:吳銘圳
第三章 高级函数特性.
Introduction to the C Programming Language
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
變數與資料型態  綠園.
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

資料!你家住哪裏? --談指標 2008.12. 綠園

何謂「指標」? 指標可看成是一種特殊的變數,用來存放變數在記憶體中的位址(address)。 如果指標ptr存放了變數a的位址,則我們就說「指標ptr指向變數a」。 變數a 指標變數ptr 1400 20 1408 的位址 變數a的位址

為什麼要使用指標 當函數必須傳回一個以上的值。 使得函數在傳遞陣列或字串資料時更有效率。 較複雜的資料結構須要用指標來把資料鏈結在一起。如鏈結串列(linked list)或二元樹(binary tree)等。 許多函數必須利用指標來傳達記憶體的訊息。如動態記憶體配置、檔案開啟函數及檔案讀寫函數等。

指標變數 指標變數的宣告: int *ptr1; /*可指向整數型態的變數*/ char *ptr2; /*可指向字元型態的變數*/

指標變數(續) 指標變數的使用: 範例: 位址運算子 & :用來求取變數的位址。 取值運算子 * : 用來取得指標所指向的記憶體位址的內容。 int a = 10, b; int *p; p = &a; b = *p; *p = 20; 結果:a = 20, b = 10

指標變數的運算 int a=10, b=20; int *p1, *p2; char ch=’a’, *pch; /* 設定運算 */ p1 = &a; /* 將a的位址存放於p1 */ p2 = &b; /* 將b的位址存放於p2 */ pch = &ch; /* 將ch的位址存放於pch */ /* 加減法運算 */ p1++; /* 將p1所存整數a位址加上整數型態長度4bytes */ pch--; /* 將pch所存字元ch位址減去字元型態長度1byte */ /* 差值運算*/ sub1 = p1 – p2; /* 計算p1和p2相差距離 */ sub2 = *p1 – *p2; /* 計算p1所指變數a和p2所指變數b的差 */

牛刀小試(一) 欲將指標變數 ptr 指向整數變數 i ,下列何者正確? Ans: _ (a) i = *ptr; (b) ptr = &i; (c) ptr = *i; (d) *ptr = i;

牛刀小試(一) 欲將指標變數 ptr 指向整數變數 i ,下列何者正確? Ans: b _ (a) i = *ptr; (b) ptr = &i; (c) ptr = *i; (d) *ptr = i;

指標與函數 在函數中,若是想傳回某個結果給原呼叫函數,可以用return 敘述,但是,return 敘述只能傳回一個值! 所以,當程式中需要傳遞兩個以上的值,就無法利用 return 敘述。 此時,指標就可以解決函數間傳遞多個傳回值的問題。

指標與函數 【範例1】 #include <iostream> #include <cstdlib> using namespace std; void swap(int,int); int main(void) { int a=3,b=5;   cout<<"Before swap…\n"; cout<<"a="<<a<<“,b="<<b<<endl; cout<<"After swap…\n"; swap(a, b); system("PAUSE"); return 0; } /* 將兩數互換 */ void swap(int x, int y) { int temp=x;   x=y; y=temp; return; } 執行結果: Before swap… a=3, b=5 After swap…

指標與函數 【範例1-1】 #include <iostream> #include <cstdlib> using namespace std; void swap(int *,int *); int main(void) { int a=3,b=5;   cout<<"Before swap…\n"; cout<<"a="<<a<<“,b="<<b<<endl; cout<<"After swap…\n"; swap(&a, &b); system("PAUSE"); return 0; } /* 將兩數互換 */ void swap(int *x, int *y) { int temp=*x;   *x=*y; *y=temp; return; } 執行結果: Before swap… a=3, b=5 After swap… a=5, b=3