函数申明、定义、调用 申明: void sort(float a[], int n); void sort(float *a, int m); void sort(float *a, int); void sort(float *, int);

Slides:



Advertisements
Similar presentations
Chap 12 文件 12.1 学生成绩文件统计 12.2 用户信息加密和校验 12.3 文件综合应用:资金账户管理.
Advertisements

Chap 12 文件 12.1 将短句“Hello World”写入到文件 12.2 读取学生成绩文件 12.3 文件复制
第九讲 结构体与文件 陆 铭
二级指针与二维数组.
C语言程序设计基础 第10章 指针进阶 刘新国.
10.1 二级指针 10.2 指针与二维数组 10.3 指针的动态存储分配 10.4 函数指针 10.5 main函数的参数
Chap 11 指针进阶 11.1 奥运五环色 11.2 字符定位 11.3 用链表构建学生信息库.
第 5 章 文件I/O操作.
第十三章 文件.
专题研讨课二: 数组在解决复杂问题中的作用
複習 struct score_Type{ int chinese,english; }; struct my_Type{
C语言程序设计 第十二章 位运算.
C File System.
第8章 文件 P 了解文件的处理过程 8.2 掌握文件的基本操作本领 8.3 文件的应用举例 *贯穿教学全过程的实例.
Hadoop I/O By ShiChaojie.
计算概论 第二十一讲 文件操作 北京大学信息学院.
第十一章 文件操作 文件的概念 文件的读写 主讲:李祥 时间:2015年10月.
第10章 文件操作.
第十一章 文件 文件概述 文件操作 文件操作实例 本章小结 作业: 练习:
第10章 文件.
第10章 文件操作.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
Chap 11 指针进阶 11.1 布袋中的彩色球 11.2 解密藏头诗 11.3 学生信息管理的链表实现.
C 語言簡介 - 2.
11.1 文件的基本概念 11.2 文件的打开与关闭 11.3 文件的顺序读写 11.4 文件的随机读写 11.5 文件检测
函数申明、定义、调用 申明: void sort(float a[], int n); void sort(float *a, int m); void sort(float *a, int); void sort(float *, int);
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
二维数组的指针表示 与复杂的指针例子 专题研讨课之三.
第十二章 文件 12.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp);
第4章 MATLAB文件操作 4.1 文件的打开与关闭 4.2 文件的读写操作 4.3 数据文件定位.
程式設計 博碩文化出版發行.
第九章 文件 程序数据标准输入输出设备 程序数据文件 数据流和文件 文件的打开和关闭 文件读写函数.
File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案.
THE C PROGRAMMING LANGUAGE
第10章 文件操作.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第十章 文件操作.
第10章 对文件的输入输出 10.1 C文件的有关基本知识 10.2 打开与关闭文件 10.3 顺序读写数据文件 10.4 随机读写数据文件
第10章 檔案與資料夾處理 10-1 C語言的檔案輸入與輸出 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫
第十三章 文件 目录 学生信息管理系统的完善 文件的概念 文件类型指针 文件的打开与关闭 文件的顺序读写
第9章 文件 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
第5章 文件.
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
研讨课4 文件操作.
目录 11.1 文件的种类 11.2 文件指针和文件内部的位置指针 11.3 文件的操作 11.4 文件的打开与关闭
第十三章 文件.
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
第9章 文件 学习目的与要求: 熟练掌握文件指针的使用 掌握与文件相关的函数 能够利用文件相关函数实现各种操作.
C语言程序设计.
一、文件的基本概念 第十三章 文 件 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
C標準輸出入函數庫 與 作業系統.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第十一章 文件 11.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
3.16 枚举算法及其程序实现 ——数组的作用.
第二章 类型、对象、运算符和表达式.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
第十一章 文件 11.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
第13章 文 件.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
結構、檔案處理(Structure, File)
第七章 文件 7.1 文件的基本概念 7.2 文件类型指针 7.3 文件的打开与关闭 7.4 文件的读/写 7.5 文件的随机读/写
插入排序的正确性证明 以及各种改进方法.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab2.
Presentation transcript:

函数申明、定义、调用 申明: void sort(float a[], int n); void sort(float *a, int m); void sort(float *a, int); void sort(float *, int);

函数申明、定义、调用 定义: void sort(float a[], int n) { …… } void sort(float *data, int m)

函数申明、定义、调用 float x[100], b[3][50]; double y[20]; 调用:sort(x, 100); sort(x+10, 20); sort(b[0], 50); sort(b[2], 25); sort(b[2]+25, 25); sort(y, 20); ×

例10-7 输出命令行参数 例11-7 编写C程序echo,它的功能是将所有命令行参数在同一行上输出。 #include <stdio.h> int main(int argc, char *argv[ ]) { int k; for(k = 1; k < argc; k++) /* 从第1个命令行参数开始 */ printf("%s ", argv[k]); /* 打印命令行参数 */ printf("\n"); return 0; } 在命令行状态下输入: echo How are you? How are you?

指针数组和数组指针 指针数组 char *pa[5]; 类型名 *变量名[数组长度] char (*ap)[5]; 类型名 *变量名[数组长度] 数组元素是指针类型,用于存放内存地址 每一个pa[i]都是指针,使用前必须先赋值,存放合理的内存地址 char (*ap)[5]; 类型名 (*变量名)[数组长度] 定义了一个指针变量,可以存放一个数组的地址。 例如 char a[5]; 那么, 可以 ap = &a; 而且 (*ap)[i] 等同于 a[i] char b[7][5]; ap = b; (ap指向了b的第一行) ap ++; (ap指向了b的第2行) ++ap; (ap指向了b的第3行)

指针数组和数组指针 CArray b[7]; //等同于char b[7][5]; ap = b; (ap指向了b的第一行) char (*ap)[5]; 类型名 (*变量名)[数组长度] typedef 类型名 MyType[数组长度] typedef char CArray [5]; CArray *ap; CArray b[7]; //等同于char b[7][5]; ap = b; (ap指向了b的第一行) ap ++; (ap指向了b的第2行) ++ap; (ap指向了b的第3行)

指针与地址 地址就是一个32位的整数 void * addr; void指针可以强制转化为任何类型的指针,例如 (int*)addr (struct xxx*) addr void  像功能未定的干细胞 任何类型的指针都可以转化为void* 转化时,地址不变,对应的内存的内容不变

指针与地址 p = a+1; 表达式*((int *)(p+1)+2)的值为 11 struct { int x, y[3]; } a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p; p = a+1; 表达式*((int *)(p+1)+2)的值为 11

排序算法 … a[2] a[1] 冒泡排序 选择排序 找出最大的元素,交换到数组最后 对剩下的n-1个算法重复执行 a[0] a[n-1] void sort( int a[], int n) /*选择排序的递归实现*/ { if( n==1 ) return; /* 只有1个元素,nothing need to do */ idMax  找到a[]中最大元素对应的下标 交换a[idMax]和a[n-1] sort(a,n-1); } 通过相邻元素交换,大的元素向后移 记录目前为止最大的元素的下标 … a[2] a[1] a[0] a[n-1] a[n-2]

查找算法 … a[2] a[1] a0 < a1 < a2 <。。。< a[n-2] < a[n-1] 找元素x所在的下标 int find(int a[], int n, int x) { int i, k, m; } … a[2] a[1] a[0] a[n-1] a[n-2] for( k=0; k<n; k++ ) if( a[k]==x ) return k; if(n==1) return (a[0]==m ? 0 : -1); m = n/2; if( a[m]==x ) return m; else if ( a[m]<x ) return find(a+m, n-m, x) else return find(a, m, x) 二分搜索 线性搜索

函数指针 1: resule=0.5000 2: resule=0.6481 double f1 ( double x ) { return (x*x); } double f2 ( double x ) { return (sin(x)/x); } double calc ( double (*f)(double), double a, double b ) { double z; z = (b-a)/2 * ( (*f)(a) + (*f)(b) ); /* 调用 f 指向的函数 */ return ( z ); } int main ( void ) { double result; result = calc(f1, 0.0, 1.0); /* 函数名f1作为函数calc的实参 */ printf("1: resule=%.4f\n", result); funp = f2; result = calc(funp, 1.0, 2.0); /* 函数指针funp作为函数calc的实参 */ printf("2: resule=%.4f\n", result); return 0; 1: resule=0.5000 2: resule=0.6481

通过函数指针调用函数 int (*funptr)( ); funptr = fun; 调用函数 (*函数指针名)(参数表) 函数名 z = fun(3, 5); 函数指针 (*funptr)(3, 5); (*函数指针名)(参数表) int fun(x ,y) { return x > y ? x : y; }

文件 在磁盘上 在内存里 字节 . . . . . . . . 字节 . . . . . . . . FILE *文件指针 void * 指针

12.3.5 数据块读写fread()和fwrite() fread(buffer, size, count, fp); 从二进制文件中读入一个数据块到内存 fwrite(buffer, size, count, fp); 向二进制文件中写入一个数据块 buffer:指针,表示存放数据的首地址; size:数据块的字节数 count:要读写的数据块块数 fp:文件指针

文件打开方式 fp = fopen("f.txt", "r") 文件打开方式参数表

12.2.3 关闭文件 fclose(文件指针) 函数fclose() 的返回值 if( fclose(fp) ){ 12.2.3 关闭文件 if( fclose(fp) ){ printf( "Can not close the file!\n" ); exit(0); } fclose(文件指针) 把缓冲区中的数据写入磁盘扇区,确保写文件的正常完成 释放文件缓冲区单元和FILE结构体,使文件指针与具体文件脱钩。 函数fclose() 的返回值 返回0:正常关闭文件 返回非0:无法正常关闭文件

文件读写函数 字符读写函数: fgetc / fputc 字符串读写函数:fputs / fgets 格式化读写函数:fscanf / fprintf 其他相关函数: 检测文件结尾函数feof 检测文件读写出错函数ferror 清除末尾标志和出错标志函数clearerr

其他相关函数 函数fseek( ) fseek(fp, offset, from); offset:移动偏移量,long型 用来控制指针移动 offset:移动偏移量,long型 from:起始位置,文件首部、当前位置和文件尾部分别对应0,1,2,或常量SEEK_SET、SEEK_CUR、SEEK_END。 例如: fseek(fp, 20L, 0):将文件位置指针移动到离文件首20字节处 fseek(fp, -20L, SEEK_END):将文件位置指针移动到离文件尾部前20字节处

其他相关函数 函数ftell( ) ftell(文件指针); 获取文件大小: fseek(fp, 0L, SEEK_SET); begin = ftell(fp); fseek(fp, 0L, SEEK_END); size = ftell(fp) - begin;