指標 01010 10101 01010 10101 01010 10101.

Slides:



Advertisements
Similar presentations
图说 毕业生档案 学生工作部 2016 年 5 月. 毕业生档案 毕业前 文字记载 书面材料 家庭情况政治思想 身体状况学习成绩 高校毕业前文字记载的书面材料 用人单位选拔、聘用毕业生的重 要人事依据 工作后人事档案的基础和雏形 什么是毕业生档案?
Advertisements

南宁市中小学生学籍信息化管理系统 用户培训手册
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
南京市中等职业学校 2013级人才培养方案 编制说明.
樓宇及單位要求 遵守建築物條例規定的安全及衛生標準 聘請認可人士提供服務 提交擬議工程的圖則 認可人士/註冊結構工程師名冊
整体销售方案 中山市美好物业代理有限公司
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
臺中市頭家國小 生理衛生講座 青春期的奧秘 ‧說到青春期,你會想到? ‧班級表現最好的,有獎徵答有優先權。 葉孟娟老師、黃文玲老師.
请说出牛顿第一定律的内容。.
课程体系改革及工作过程系统化课程建设整体设计与实施
教育部補助計畫經費動支應行注意事項 報告單位:主 計 室 104年10月.
管理学基本知识.
1. 民主社會裡,公民的參與有其重要性,而透過政治參與無法達成下列哪一項目的?
农事学实践教程 主讲:XXXX 作物繁种技术.
公 文 写 作 第一讲 主讲教师:娄淑华          学时:32.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
新世代計算機概論 第14章 程式語言.
第二章 信息的获取 2.1 获取信息的过程与方法.
C语言程序设计 第十二章 位运算.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
第一章 C语言概述.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
物件導向程式設計 (Object-Oriented rogramming)
C 程式設計— 指標.
C程序设计.
If … else 選擇結構 P27.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
Function.
第二章 基本元素、类型和概念 七、输出函数printf 八、输入格式转换函数scanf.
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
算法的基本概念.
第四章 C 语言中的输入和输出.
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第4章 顺序程序设计.
Struct結構 迴圈
C语言大学实用教程 第5章 函数与程序结构 西南财经大学经济信息工程学院 刘家芬
教育部補助計畫經費動支應行注意事項 報告單位:主 計 室 107年11月6日.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
第11章 位运算 为了节省内存空间,在系统软件中常将多个标志状态简单地组合在一起,存储到一个字节(或字)中。C语言是为研制系统软件而设计的,所以她提供了实现将标志状态从标志字节中分离出来的位运算功能。 所谓位运算是指,按二进制位进行的运算。 11.1 数值在计算机中的表示 11.2.
主标题 副标题 日期.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
C程序设计.
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第5章 函 数.
C语言程序设计 李祥 QQ:
第3章 数据类型、运算符与表达式.
第二章 类型、对象、运算符和表达式.
第四章 C 语言中的输入和输出.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第十二章 位运算.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
2015年雪佛兰经销商7-8月夏季市场活动激励政策 执行手册及模板
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
厉害了,我的国! 15会计2班团支部 2018年4月20日.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

指標 01010 10101 01010 10101 01010 10101

指標Pointer 指標和int,float,char一樣,為C語言的一種資料型別 大小為4 bytes(硬體32位元) 記憶體的地址(可視為unsigned int) 相關的運算符號有*(透過pointer取記憶體內容),&(取變數地址),=,+,-

指標的用法 &:取得變數的位址 *:間接參考,用指標取得記憶體的內容

指標的用法 int a=1, b=2, c=0; int *p; p = &a; 宣告p是指向int的指標 p is a pointer to int p = &a;  &a是取a的地址(沒有&的話就變成取a的內容) =讓&a複製到p,也就是說現在p的內容為變數a的地址 1 2 xxxx0001 xxxx0003 xxxx0005 &a xxxx0001 xxxx0007 b c a p

指標的用法 b = *p; *p = 0; p = &c; b的值被設定為指標p所指到記憶體的值 沒有*的話就變成取p的內容,而不是透過p去取a的內容 *p = 0;  透過p將a的值設定為0,即a=0 p = &c;  指標p現在指向c 1 1 2 xxxx0005 xxxx0001 xxxx0001 xxxx0003 xxxx0005 xxxx0007 a b c p

指標的用法 *p = *p + 10; b = *p + 1; ++*p; 透過p把c的值增加10 透過p取c的值,加1之後把結果存入b中 1 11 11 10 xxxx0005 xxxx0003 xxxx0005 xxxx0007 xxxx0001 a b c p

進階

指標使用錯誤 int *x pointer x 指到的記憶體內容是否合法,C語言不管 初學者常宣告pointer,但pointer指到的空間沒有分配 #include <stdio.h> int main() { int x; int *p; p = 0; // 這讓p指到不合法的地方去了 *p = 0; // 透過p去設定不合法的記憶體, 會產生嚴重錯誤 x = *p; // 這也是錯的 } ???????? ? 00000000 … 00000000 00000001 xxxx0001 xxxx0003 x p

指標的+、-、運算符號 pointer p + integer n,表示指標p往下指n個元素 pointer p - pointer q,表示q和p之間距離了幾個元素 pointer p - integer n,表示指標往上指n個元素 #include <stdio.h> int main() { int x[100]; int *p, *q; p = x; q = x + 10; *(p+10) = 100; // 相當於x[10] = 100 printf("offset between p and q is %d\", q - p); // 這會印出10 } yyyy0001 X[0] yyyy0003 X[1] yyyy0021 X[10] 100 X[20] yyyy041 yyyy0199 X[99] … … … … yyyy0001 yyyy021 xxxx0001 xxxx0003 p q

指標的+、-、運算符號 使用+-符號來移動指標,不要指到不確定的位址 p #include <stdio.h> main () { float z = 5.5; int x = 5; int y = 5; int *p; p = &x; p = p + 1; // 想把p指到哪裡去啊? printf("%d %d %f\n", x, y, z); *p = 20; } zzzzzz01 5.5 z xxxxxx01 5 X yyyyyy01 5 y ???????? xxxxxx01 pppp0001 p

指標也可以指到另一個指標 #include <stdio.h> main () { int y = 2; int x = 5; int *p; int **q; p = &x; //把p 指到 x q = &p; // 把 q 指到 p *q = &y; // 透過q把p的內容改為指到y printf("%d\n", *p); // 會印出2 printf("%d\n", **q); // 會印出2 } yyyy0001 2 y yyyy0003 5 x yyyy0001 yyyy0003 xxxx0001 p xxxx0003 q xxxx0001 printf(“%d\n”, *q);會印出? yyyy0001

參數傳遞Call by Value C 函數呼叫參數傳遞使用Call by Value,被呼叫的函數無法直接存取呼叫函數內的變數。若要類似Call by Reference,要透過傳遞指標 void fun(int x, int y) { x = 5 y = 5; } void main() { int x = 0; int y = 0; fun(x, y); printf("%d %d\n", x, y); yyyy0001 5 x yyyy0003 5 y xxxx0001 x y xxxx0003

傳遞指標: fun可以存取main裡面的x,y void fun(int * x, int * y) { *x = 5; *y = 5; } void main() { int x = 0; int y = 0; fun(&x, &y); printf("%d %d\n", x, y); fun的x,y和main的x,y是不同的變數型態,一指標,一整數 fun裡的pointer x,y其內容是main裡x,y的地址 透過pointer x,y可以存取main的int x,y yyyy0001 xxxx0001 x yyyy0003 xxxx0003 y xxxx0001 x 5 5 y xxxx0003