计算机软件基础.ppt_第1页
计算机软件基础.ppt_第2页
计算机软件基础.ppt_第3页
计算机软件基础.ppt_第4页
计算机软件基础.ppt_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机软件技术基础 6 4复杂数据类型和程序设计 本章主要内容 1 指针类型和程序设计2 数组类型和程序设计3 结构类型和程序设计4 共用体类型和程序设计5 位运算和位段6 文件7 应用程序举例 4 1指针类型和程序设计 本节主要内容指针的概念和指针的运算指针变量用作函数参数函数的指针与函数调用返回指针值的函数 4 1 1指针的概念和指针的运算 指针就是内存单元所对应的地址 每个存储单元都对应有一个地址和一个名称 如变量名 因此 C语言中提供了两种对存储单元访问的方式 通过名称和通过变量的地址 由于在系统中内存单元的地址是用有序数来表示的 为了能够操作这些地址 C提供了一种相应的特殊变量来存放这些地址 指针变量 1 50 1011H 1010H a 1015H 124 1016H 5 1018H 82 1020H 1e 3 1022H 1026H x c i j k y 值 地址 变量名 存储类型数据类型 指针变量名 如 char cptr 其中 存储类型 指针变量本身的存储类型 与变量一样也有四种 register auto static extern 数据类型 指针变量指向目标的数据类型 可以是基本数据类型 也可是构造数据类型 指针变量名 用 引导的一个变量名 指针变量定义时若要初始化 其初值应是初始化地址值 变量名 如 charch cptr ch 1 指针变量的定义 C语言中对指针变量的操作有两个专门的算符 和 1 运算符 运算符为取地址运算符 功能是得到操作对象的地址 例如 scanf d d x y 从键盘上输入两个值存放到x和y两个变量对应的地址中 2 运算符 运算符是指针运算符 也叫间接运算符 作用是取得指针变量所指向的内存单元的内容 例如 y ptr 将指针变量ptr所指向的内存单元中的内容赋给变量y 2 指针变量的引用 1 算术运算 指针变量只能进行加整数或减整数的算术运算 即指向后面某个或前面某个内存单元 如 p p p p p p n p 3 等 2 赋值运算 可以将一个变量的地址赋给一个指针变量 也可以将一个指针变量指向的地址赋给另一个指针变量 例如 ptr x aptr bptr 3 两个指针变量的加减运算没有意义 因为两指针相加或相减后的值不一定会指向另一个内存单元地址 4 空指针没有意义 而且可能会危害系统 因为空指针的值是随机的 3 指针的运算 4 1指针类型和程序设计 本节主要内容指针的概念和指针的运算指针变量用作函数参数函数的指针与函数调用返回指针值的函数 4 1 2指针变量作函数参数 用指针作函数的参数 这就是函数调用时的另一种数据传递方式 传址方式 在函数的传址调用方式中 以变量的地址为实参来调用另一个函数 而被调函数所对应的形参则必须是可以接受地址的指针变量 并且所指向的数据类型要与对应实参地址所代表的数据类型一致 传址调用方式在主调函数和被调函数间传递数据的实质是 数据在主调函数和被调函数中使用的都是同一个内存单元 因此 被调函数中该内存单元中的数据值发生改变必然会反映到主调用单元中来 例一用指针变量做函数的参数 includevoidmain intadd int ptr1 int ptr2 intx1 x2 y scanf d d 例二指针变量与指针指向的变量指针变量和指针指向的变量是两个不相同的概念 如以下语句中 intx ptr ptr x ptr是指针变量 而x则是指针ptr指向的变量 看下面程序 includevoidmain intx y p1 p2 scanf d d includevoidmain intx y p1 p2 scanf d d 如果输入数据为 100 300则输出结果为 100300300100 同样输入数据为 100 300则输出结果为 100300100300为什么 将它稍作改变 程序一 程序二 swap swap main main 交换对象 交换对象 4 1指针类型和程序设计 本节主要内容指针的概念和指针的运算指针变量用作函数参数函数的指针与函数调用返回指针值的函数 4 1 3函数的指针与函数调用 C程序中的一个函数就是一个程序模块 每个程序模块在内存中都要占有一片存储区 函数名则代表了这个存储区的首址 第一个地址 这个地址称为函数的入口地址 程序中如果调用这个函数 那么程序控制流程就从这个地址转移进这个函数 既然函数名代表函数的首地址 因此 可以用一个指针变量来指向它 存放这个地址 这个指针就叫做指向函数的指针 通过这个指针就可以实现函数的调用 由于函数的名字代表了该函数的入口地址 那么就可以定义一个变量来存放这个地址 使之指向函数的入口 这个变量就叫做函数的指针变量 函数指针变量定义的一般形式为 存储类型数据类型 指针变量名 形参表 其中 存储类型 指定指针本身的存储类型 数据类型 指针所指向的函数的返回值类型 指针变量名 指定指针的变量名 注意外面的括号不能省略 如果省略 所定义的就成了指针函数 形参表 可以没有形参 但括号不能省略 1 定义指向函数的指针 includevoidswap int p1 int p2 inttemp temp p1 p1 p2 p2 temp voidmain void fp int p1 int p2 intx y pt1 pt2 2 用函数的指针来调用函数 fp swap scanf d d 在C语言中 由于指针可以作为函数的参数在函数间传递地址数据 而函数指针也是指针 因此理所当然地可以当作函数的参数来传递函数的地址 当然 函数指针传递地址的作用主要是将一个函数传递给另一个函数 当函数在两个函数之间传递时 主调函数所用的实参一般应是被传函数的函数名 而被调函数的形参则应是一个能接受函数地址的函数指针 这种作用常用于某些算法程序的设计中 3 用指向函数的指针变量作函数参数 梯形积分法 将积分区间等分成若干个小区间 每个小区间用一个梯形来近似 上底和下底分别为被积函数值f xi 1 和f xi 斜边用过f xi 1 和f xi 两点的一条直线来近似 高就是等分区间的长度 这样就可以用梯形公式计算小区间的面积 于是 举例数值积分算法及其应用 includedoubleitg double fn floatx floata floatb intn inti floatf h s h b a n s fn a fn b 2 for i 1 i n i s s fn a i h return s h 梯形积分算法函数 被积函数1doublef1 floatx floatf f 1 x x returnf 被积函数2doublef2 floatx floatf f 1 x x x returnf 主函数voidmain intn doubley1 y2 y1 itg f1 0 1 50 y2 itg f2 0 2 80 printf lf lf y1 y2 4 1指针类型和程序设计 本节主要内容指针的概念和指针的运算指针变量用作函数参数函数的指针与函数调用返回指针值的函数 4 1 4返回指针值的函数 C中的函数使用后可以返回一个值 这个返回值的类型可以是整型 实型 字符型等基本类型或空类型 void 然而 有种函数在被调用后返回的却是一个地址 指针型数据 这种函数就称为返回指针值的函数 也简称为指针函数 其定义形式为 存储类型数据类型 函数名 形参表 例如 某函数的头部定义为 float function floatx floaty 则 float 表示所定义的函数是一个指向实型数据指针值 函数名为function 函数有两个实型参数x和y P137例4 4 includevoidmain int p1 p2 f1 inta p1 f1 5 printf d n p1 p2 f1 8 printf d n p2 int f1 inta a return 4复杂数据类型和程序设计 本章主要内容 1 指针类型和程序设计2 数组类型和程序设计3 结构类型和程序设计4 共用体类型和程序设计5 位运算和位段6 文件7 应用程序举例 4 2数组类型和程序设计 本节要求主要内容一维数组二维数组字符数组和字符串指针和数组 4 2 1一维数组 1 一维数组的定义一维数组的定义形式为 存储类型数据类型数组名 常量表达式 其中 存储类型 可以是auto 可省略 static或extern 数据类型 指定数组元素的类型 如int long float等 常量表达式 指定数组元素的个数 数组长度 必须有 例如 staticinta 20 定义了一个静态数组a 共有20个数组元素 都是整型 数组元素在数组中按下标顺序存放 起始元素的下标为0 最后一个元素的下标为定义数组长度值减1 在C中 数组不能以一个整体的形式参加数据处理 只能通过对每个组元素的引用来达到处理数组的目的 因此 在实际使用中 更多的是数组元素 一维数组的数组元素引用形式为 数组名 下标 其中 下标可以是整型常数或表达式 如果是实型 会自动取整 例如 a 0 5 x a 3 2 b 4 a 2 sacnf f 数组元素可以视为一种带下标的变量 下标变量 与和它类型相同的普通变量的使用方法相同 即 凡是能用普通变量的地方 就能使用同类型的数组元素 2 一维数组元素的引用 在定义数组时 可以同时对数组进行初始化 其形式为 存储类型数据类型数组名 常量表达式 常量表达式 中的常量表达式就是数组元素赋的初始值 每个数据之间用逗号分隔 如 inta 5 1 2 3 4 5 可以只对数组的部分元素初始化 如 inta 10 1 2 3 4 5 只给前5个数组元素赋初值 intb 10 0 2 0 4 0 6 0 8 0 10 给奇数号元素赋初值 其余元素清0 可以用初始化数据的个数定义数组的长度 如 floatx 1 0 2 2 3 1 4 7 5 6 6 1 相当于为数组x定义了6个数组元素 未初始化的数组元素 若定义的存储类型为static或extern 则预先清0 若为auto类型 则是随机数 3 一维数组的初始化 例一输入100个整型数据 找出其中的最大值并显示出来 includevoidmain intbuffer 100 Max i for i 0 i 100 i scanf d 例二求Fibonacci数列的前20项 并按10项一行输出 includevoidmain intfib 20 1 1 i for i 2 i 20 i fib i fib i 1 fib i 2 for i 0 i 20 i if i 10 0 printf n printf 5d fib i 结果 11235813213455891442333776109871597258441816765 例三将一维数组倒置并输出 includevoidmain inti j temp a 10 1 2 3 4 5 6 7 8 9 10 for i 0 j 9 i j i j temp a i a i a j a j temp for i 0 i 9 i printf 4d a i 结果 10987654321 4 2数组类型和程序设计 本节要求主要内容一维数组二维数组字符数组和字符串指针和数组 4 2 2二维数组 1 二维数组的定义通常可以将一个矩阵定义为一个二维数组 其定义形式如下 存储类型数据类型数组名 常量表达式 常量表达式 例如 intarr 2 3 就定义了一个两行三列的自动整型二维数组arr 二维数组元素的存放顺序是按行存放的 元素的下标也是从0开始 对于一个有m行n列的二维数组a 其数组元素a i j 的存放位置可以用式子i n j求得 二维以上数组元素的存放位置也可用类似方法求得 多维数组的定义多维数组的定义也与之类似 存储类型数据类型数组名 常量表达式 常量表达式 例如 intbar 2 2 3 定义的就是一个三维数组 其存放顺序为 附加说明 二维数组元素的表示形式为 数组名 下标 下标 与一维数组元素一样 它们也是下标变量 可以与普通变量同等使用 例如 a 0 1 10 a 2 1 a 1 2 b 2 3 又如 intx 4 3 for i 0 i 4 i for j 0 j 3 j scanf d 2 二维数组元素的引用 二维及多维数组的初值可用两种方式赋给 1 分行赋给如 intarr 2 3 1 2 3 4 5 6 2 顺序赋给如 intarr 2 3 1 2 3 4 5 6 当然 与一维数组一样 也可以对部分数组元素赋初值 但要注意所赋元素的位置 如 inta 3 4 1 3 就只给第一行第一列的元素和第三行第一列的元素赋了初值 多维数组也可根据所赋初值来定义数组元素个数 但省略的维说明只能是第一维 如 intb 2 3 1 1 1 2 2 2 3 3 3 4 4 4 根据赋初值个数 定义的数组应为b 2 2 3 3 二维数组的初始化 例一将一个二维数组的行和列交换存到另一数组中 并输出 includevoidmain inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 intb 4 3 i j printf 原始数组 n for i 0 i 3 i for j 0 j 4 j printf 5d a i j b j i a i j printf n printf 交换数组 n for i 0 i 4 i for j 0 j 3 j printf 5d b i j printf n 原始数组 123456789101112 交换数组 159261037114812 例二求一个3 4矩阵和一个4 3矩阵的乘积 并输出结果 includevoidmain inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 intb 4 3 12 11 10 9 8 7 6 5 4 3 2 1 intc 3 3 i j k for i 0 i 3 i for j 0 j 3 j c i j 0 for k 0 k 4 k c i j a i k b k j for i 0 i 3 i for j 0 j 3 j printf 5d c i j printf n 605040180154128300258216 4 2数组类型和程序设计 本节要求主要内容一维数组二维数组字符数组和字符串指针和数组 4 2 3字符数组和字符串 1 字符数组字符数组的定义与数值型数组的定义形式相同 char数组名 元素个数 char数组名 行数 列数 例如 chara 10 b 3 4 字符数组的每个数组元素只能存放一个字符 相当于一个字符型变量 字符数组的数组元素可以像数值型数组元素一样赋值和引用 例如 a 0 C a 1 h a 2 i a 3 n a 4 a scnaf c 由于一维数组可以用来存放一系列字符 因此可以用它来存放一个字符串 在定义字符数组时可用字符串赋初值 chara 6 China 为什么定义6个 charb Chongqing 有多少个元素 但是在定义了字符数组后 不能再将一个字符串赋给一个数组 以下赋值将是错误的 chara 6 a China 或a 6 China 2 一维字符数组和字符串 由于二维的每一行相当于一个一维数组 因此 每一行可以存放一个字符串 例如 chara 3 10 Beijing Tianjin China charb 8 C Java Fortran Basic 于是 a数组中 a 0 代表 Beijing a 1 代表 Tianjin a 2 代表 China b数组中 b 0 代表 C b 1 代表 Java b 2 代表 Fortran b 3 代表 Basic 字符数组中每一行存放的字符串可以小于等于该行的元素个数 但不能超过 否则字符串的结尾符 0 会被丢掉 导致字符串不能结束 3 二维字符数组和字符串 1 字符串的格式输入和输出字符串的格式输入和输出使用的格式为 s 例如 定义以下字符数组后 chara 15 b 4 10 可以用以下格式进行输入和输出 scanf s 4 字符串的输入输出 2 字符串的独立输入和输出字符串可以使用专门的函数输入和输出 其函数名分别为gets和puts 例如 定义以下字符数组后 chara 15 b 4 10 可以用以下方式进行输入和输出 gets a gets b 0 gets b 1 等 puts a puts b 0 puts b 1 等 gets和puts函数也是标准输入输出函数 头文件仍然是stdio h 4 字符串的输入输出 1 求字符串的长度strlen 字符串 功能是求出字符串有多少个字符 计算原则是不包括字符串的结尾符 0 其中的字符串可以是字符串常量 也可以是字符数组或字符指针 例如 chara changcheng r strlen a 得到的r 10 字符串处理函数的信息存放在头文件string h中 使用前应包含进去 include 5 常用字符串处理函数 2 字符串比较函数strcmp 字符串1 字符串2 功能是对两个字符串进行逐个字符的比较 直到出现不同字符或字符串结尾符 0 比较原则是按字符的ASCII值进行 其返回值为两个比较字符ASCII值的差 如果返回值大于0表示字符串1 字符串2 等于0表示两个字符串相等 小于0表示字符串1 字符串2 例如 r strcmp changcheng changhe 得到的r 5 表示 changcheng changhe 5 常用字符串处理函数 3 字符串拷贝函数strcpy 字符串1 字符串2 功能是将字符串2的内容拷贝到字符串1中 拷贝原则是字符串1必须是能够容纳下字符串2的字符数组 或字符指针 名 例如 chara 10 b shanghai strcpy a b 也可以直接将字符串拷贝到字符数组中 strcpy a chongqing 5 常用字符串处理函数 4 字符串连接函数strcat 字符串1 字符串2 功能是将两个字符串连接成一个字符串 即先去掉字符串1的结尾符 0 再将字符串2及其结尾符 0 连接在后面 连接原则是字符串1必须是能够容纳下两个字符串内容的字符数组 或字符指针 名 例如 chars1 10 text s2 book strcat s1 s2 连接后 s1中的内容为 textbook 5 常用字符串处理函数 includevoidmain charx 40 y 20 inti 0 j 0 gets x gets y while x i 0 寻找x的结尾符位置i for y j 0 i j x i y j 将y追加到x后x i 0 在末尾补上结尾符puts x 例一不用strcat函数 设计一程序连接两个字符串 include includevoidmain chars 5 40 ms 40 inti for i 0 i0 比较剩余字符串strcpy ms s i 将较大者给msputs ms 例二设计一程序找出若干个字符串的最大者 4 2数组类型和程序设计 本节要求主要内容一维数组二维数组字符数组和字符串指针和数组 4 2 4指针和数组 数组的所有元素是顺序存放在一个连续的存储区域内的 只要找到第一个元素的地址 就可以顺序找到其他元素 在C中 数组名就代表数组存储区的第一个地址 即第一个元素的地址 因此 可以定义相应的指针变量来指向一个数组及其元素 例如 定义inta 8 b 3 3 后 b a 0 b 0 0 b 0 b 0 a 定义一个数组后 再定义一个相同类型的指针 inta 8 p 让指针指向该数组 p a 或p 可以用以下形式指向每个数组元素 1 指向数组元素的指针及其操作 因此 p 2 与 a 2 是等价的 都代表a 2 的值 同样 a 3 10 p 3 10 a 3 10 都是给同一个元素赋值 includevoidmain inta 10 i minv p p a p指向a数组的首地址for i 0 i 10 i scanf d p i p i的相当于 a i minv p for i 1 i 10 i if minv p i p i 相当于a i minv p i printf MIN d minv 例4 15 P152 找出数据序列中的最小值 includeintsum inta intn inti s 1 for i 0 i n i s a i returns voidmain intk m x 80 scanf d 2 数组名作函数参数 数组名可以作函数的形参和实参 作形参时 通常不定义其元素个数 元素的个数由调用他的实参来决定 作实参时 只需将类型一致的实参数组名对应于形参数组位置即可 如果将实参写成数组元素 则实参数组的传递从该数组元素的位置开始 在函数调用时 形参数组与实参数组共享存储单元 p是一个变量 其存储单元中的值可以随时改变 因此有 p p p 3 等 a是一个数组名 就代表数组的首地址 这个地址不能改变 因此 不能有 a a a 3 等 思考 指针p与数组名a在本质上有何不同 找出二维数组中的最大元素值 includeintmax inta 4 inti j m a 0 0 for i 0 im m a i j returnm voidmain intb 3 4 12 23 8 1 10 55 36 21 9 17 11 5 printf Max d n max b 二维数组作形参时 数组的高维可以省略 例如 该程序的弱点是只能找3 4数组的 不具通用性 找出二维数组中的最大元素值 includeintmax inta intn inti m a 0 for i 1 im m a i returnm voidmain intb 3 4 12 23 8 1 10 55 36 21 9 17 11 5 printf Max d n max b 3 4 一维数组作形参时 实参可以用二维数组 例如 该程序的功能与上一个程序相同 但具有通用性 includevoidreverse inta intn inti temp for i 1 i n 2 i temp a i a i a n 1 i a n 1 i temp voidmain intb 1 2 3 4 5 6 7 8 9 10 i reverse b 10 for i 0 i 10 i printf 4d b i 例一将一维数组元素顺序倒置 函数reverse并没有返回任何值 倒置后的b数组值是通过与形参数组a共享存储单元得到的 includevoidreverse inta intn inti temp for i 1 i n 2 i temp a i a i a n 1 i a n 1 i temp voidmain intb 1 2 3 4 5 6 7 8 9 10 i reverse b 4 6 for i 0 i 10 i printf 4d b i 例二只向形参传递部分数组元素 函数reverse接受的只有b数组的后6个元素 a数组只对接受的元素进行倒置 如果要倒置前5个元素又该怎么办 includevoidsort inta intn inti j temp for i 0 ia j 1 temp a i a i a j a j temp voidmain inti n a 100 scnaf d 例三将一维整型数组从小到大排序 冒泡法 说明 冒泡法的实现过程 原始数据 445682356345985729999a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 循环 i控制比较轮数 9轮 j控制每轮比较的次数 逐轮减少 第1轮 i 0 第1次 j 1 445682356345985729999第2次 j 2 445682356345985729999第3次 j 3 448562356345985729999第4次 j 4 448235656345985729999第5次 j 5 448235656345985729999第6次 j 6 448235656345985729999第7次 j 7 448235656934585729999第8次 j 8 448235656934585729999第9次 j 9 448235656934528579999第2轮 i 1 第1次 j 2 448235656934528579999第2次 j 3 844235656934528579999 includevoidsort inta intn inti j temp for i 0 ia j temp a i a i a j a j temp voidmain inti n a 100 scnaf d 例三将一维整型数组从小到大排序 交换法 说明 交换法的实现过程 原始数据 445682356345985729999a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 循环 i控制比较轮数 9轮 j控制每轮比较的次数 逐轮减少 第1轮 i 0 第1次 j 1 445682356345985729999第2次 j 2 856442356345985729999第3次 j 3 856442356345985729999第4次 j 4 856442356345985729999第5次 j 5 856442356345985729999第6次 j 6 856442356345985729999第7次 j 7 856442356345985729999第8次 j 8 256442356345985789999第9次 j 9 256442356345985789999第2轮 i 1 第1次 j 2 244562356345985789999第2次 j 3 223564456345985789999 3 二维数组的指针表示法 一个二维数组arr由若干个名字分别为 arr 0 arr 1 arr 2 arr i 的一维数组组成 在C语言中 规定一维数组名代表数组的首地址 有下式 arr i arr i 0 按照C语言一维数组地址加法的规则 可以得到 arr i j arr i j 由于arr i 等价于 arr i 所以有 arr i j arr i j arr i j 是三个等价的地址表示形式 得到使用指针的方式表示二维数组元素arr i j 的形式为 arr i j 或 arr i j 可见 在二维数组arr中 arr arr i arr i arr i arr i j arr i j都是地址 说明 在二维数组arr中 arr i和 arr i 都是数组arr第i行的首地址 但它们表示的意义是有区别的 arr i是将数组看成一个用一维数组作为元素的一维数组 其移动的方向是按每次移动一行 即一个一维数组 而使用 arr i 则是将数组看成若干个简单变量元素组成的 其移动方向是每次移动一个元素 当使用指针变量来指向它们时 要使用不同类型的指针变量 使用 arr i 时 定义普通指针即可 赋给指针首地址时只能用arr 0 arr 0 或 请看两个二维数组指针表示的例子 一 二 4 二维数组的指针作函数的参数 多维数组的指针 地址 可以作为函数的参数在函数间进行传递 根据使用的需要可以使用指向数组元素的指针 即指向普通变量的指针 或指向一维数组的指针 2 二维数组 一 2 二维数组 二 b b 由于一个字符串可以用一个字符数组来存放 因此 也可以用相应的指针来处理一个字符串 例如 chara China p p a 那么 指针p就指向了数组a 这样 在一般情况下 就可以用指针p来代替数组a对字符串进行处理 例如 gets p puts p scanf s p printf s n p 也可以用该指针指向各字符元素 例如 p i 等价于a i p 3等价于a 3 p 3 等价于 a 3 或a 3 5 字符串和指针 1 字符串指针定义后 必须指向一个确定的对象 不能悬空 例如 charc 20 ptr ptr c 2 字符串指针在定义时可以初始化 例如 char ptr Chongqing 3 字符串指针在定义后仍可以赋值 例如 char p p Heisastudent 但字符数组不能这样赋值 4 字符串的指针可以移动到字符串中的任何位置 如 chara Heisastudent p a p p 8 则 puts p puts a 8 puts 输出的内容相同 字符串指针使用规则 includevoidstrlink char ptr1 char ptr2 while ptr1 直到 ptr1为 0 while ptr1 ptr2 直到 ptr2为 0 voidmain charstr1 80 abcde str2 12345 strlink str1 str2 puts str1 例 用字符指针处理字符串 连接两个字符串 说明 一组相关的同类型数据可以构成一个数组 同样 一组指向相同数据类型的相关指针也可以将其构成一个指针数组 指针数组中的每一个元素都是指针 其定义的一般形式为 存储类型数据类型 数组名 常量表达式 例如 char name 10 就定义了一个有10个指针元素的一维指针数组 其中的每一个元素都是指向一个字符串的指针 与一般数组一样 指针数组也可以在定义时初始化 如 char name Pascal Fortran Basic C 由于字符型指针指向的是一个字符串 指针数组中的每个元素各自指向不同的字符串 其长度可以不同 而一个字符串又相对于一个一维字符数组 因此 一个一维字符指针数组相当于一个二维字符数组 且每一行可以不等长 6 指针数组 include includevoidssort char a intn inti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论