网站大量收购独家精品文档,联系QQ:2885784924

C语言程序设计[第六章].pptVIP

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计[第六章]

第六章 指针;本章主要内容;一、指针概述;什么是内存单元“地址”?;内存单元与地址;如何表示实体地址?;2.指针(pointer) ;3.指针变量 P191;为什么要使用指针变量?;指针变量——不要谈”指”色变;首先——搞定*p;注意——不同的*p;有关*p的小结;*p——并非就这么简单;看看两个例子;p指向字符数组时的*p;与*组合使用时 ;小考一下,如何?;指针变量能参加运算吗?;指针变量的赋值运算;典型错误;为什么未指向实体的指针是“危险指针”?;空指针 ;讨论:以下程序中的*p1,*p2;指针变量的算术运算;以下程序哪个语句执行时会出错?;指针的逻辑比较 P195 ;**p:多重指针 (指向指针的指针)P198;用一个*声明一个变量p int a=5,*p=a; 使用时,p带*是a的值(“直接取值”)。 用两个*声明一个变量p int a=5,**p,*p1; p1=a,p=p1; 使用时p带两个*是a的值 (“两重间接取值),p带一个*是a的地址。 ;指针变量作为函数参数使用;再看一个例子;二、指针与数组 ;有何感觉?;注意事项;小结:C语言的有关规定;试一试看;二维数组就没这么简单了;列地址是怎么回事?;不妨看一个示例;行地址又是怎么回事呢?;看两个例子;看一个例子;用简单指针变量指向二维数组时;二维数组a;比较一下;再看下一个例子; 行指针;行指针是如何使用的?;示例一;示例二;示例三;示例四;指针与字符串;指针与字符串;指针数组 ;示例;带参主函数 ; 不过,C语言还允许在这个命令行中键入要程序处理的其他字符串。例如,要让cfile程序处理一个字符串“hardware”,可以键入命令行: cfile hardvare 如果要让cfile程序处理两个字符串,如“hardware”和“software”,则可以键入命令行: cfile hardvare software 那么,键入这些字符串后,C程序怎么接收的呢? 实际上,这些字符串就是由main的两个参数接收的。如图6.18所示,当键入上述命令时,操作系统将把“cfile”、“hardware”和“software”保存在内存中,并把它们的地址依次存放在数组argv中,同时把字符串的个数,也即数组argv的大小存放在变量argc中。;#include″stdio.h″ int main (int argc, char * argv[]) { while (argc1) { ++argv; printf (″%s\n″,*argv); --argc; } return 0; }; 如果从键盘输入的命令行为: cfile hardware software 则输出为: hardware software 因为argc初值为3,每次循环减1,故其循环两次。第一次时,先使argv指向argv[1],然后输出argv[1]指向的字符串“hardware”,第二次开始时,又使argv指向argv[2],然后输出“software”。 ; 用带参的main函数可以直接从命令行得到参数值(这些值是字符串),在程序运行时可以根据输入的命令行中的不同情况进行相应的处理。例如,在使用数据文件时,可以根据不同的需要输入不同的命令行;以打开不同的文件(有关文件的概念和使用将在第8章介绍)。 利用main函数中的参数可以使程序从系统得到所需的数据,或者说,增加了一条系统向程序传递数据的渠道,增加了处理问题的灵活性。 其实main的形参名并不一定非用argc和argv不可,只是习惯上一般用这两个名字。如果改用别的名字,其数据类型不能改变,即第一个形参为int型,第二个形参为指针数组。; 顺便说明一个问题:在本例中用到argv++的运算,是使argv的值自加。而argv是数组名。以前说过数组名代表一个常量,它是数组起始地址,它是不能进行自加运算的,是不能改变其本身的值的。例如下面程序是不能通过编译的: main ( ) { int a[5]; int i; for (i=0;i5;i++,a++) printf (“%d”,*a); }; 错误在于a不能进行自加运算,a++不合法。这是由于在编译时给a数组分配一段内存单元,a代表数组起始地址,是一常量。注意a是main函数中的数组名,不是形参。如果将a设为形参数组,情况就不同了: void fun(int a[],int n) { int i; for (i=0;in;i++,a++) printf (“%d”,*a); } int main( ) { static int

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档