- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言内涵教程练习参考答案.doc
9.1
存储单元的地址仅表明其首字节在内存中的位置,只有地址无法确定相关储存单元的大小及编码格式。只有知道了类型,才能确定相关存储单元的大小及编码格式,才能使用存储单元,因此,有类型的地址可以确定存储单元。
9.2
整型变量存储整数,指针变量存储地址。指针与内存地址的关系似乎更像整型与整数的关系。准确地说,指针变量存储的是存储单元的地址而并非简单的内存地址。简单的内存地址可以看成一个整数,但存储单元的地址应理解成具有类型的地址。
9.3
地址是整数,但整数不是地址。多次强调,存储单元的地址有类型,而指针变量也只能用规定类型的存储单元的地址赋值。更进一步,指针变量只能指向程序拥有的存储单元。因此,通常不能用整数给指针变量赋值。
理论上不可以,只有同类型间的指针变量才可以相互赋值,但实际上C语言追求效率,不保证类型安全,有些C语言编译系统“允许”不同类型的指针变量之间相互赋值。即使单精度指针变量pf真的指向了整型变量i,通过*pf使用变量i的存储单元也没有太大的实际意义。
9.4
不等价。double *p = lf;是初始化语句,定义了一个双精度指针变量p,并且它被赋值为变量lf的地址;语句*p=lf;是赋值语句,把变量lf的地址赋值给指针变量p指向的存储单元,这条语句有两个问题,首先指针变量p没有指向合法的存储单元,不能以间接引用*p的方式使用非法的存储单元,其次,*p标识存储单元的类型为双精度,不能接受变量lf的地址,两者类型不匹配。double *p = lf;的作用等同于double *p; p = lf;。
9.5
程序的运行结果为:
因为语句printf(“%x”, -5);的输出结果为fffffffb,所以变量i实际的内存状态和简化后的内存状态如下:
变量pi与变量i的关系如下:
9.6
指针变量用于存储某类型存储单元的地址,而存储单元的地址在VC6.0中均为32位,因此,无论何种类型的指针变量,其长度均为4个字节。
sizeof(pf)的值为指针变量pf本身的长度,长度为4个字节。sizeof(*pf)的值为指针变量pf指向的存储单元的长度,即双精度型存储单元的长度,为8个字节。
9.7
不能用整型变量给整型指针变量赋值。可修改为:pi=i;或pi=(int*)i;。
9.8
程序中指针变量p1指向了整型变量i,而语句p2=p1;使得指针变量p2也指向了整型变量i。因为*p1和*p2也标识了变量i相关的存储单元,所以语句i = *p1 + *p2;相当于i = i + i;,语句执行后,变量i的值变为6。最终程序的输出结果为:6, 6, 6。
9.9
C语言中使用存储单元有直接引用和间接引用两种方法。对于指针变量p,语句p=i;为指针变量p赋值为变量i的地址,实际上是使用直接引用的方式使用了指针变量p本身的存储单元。语句*p = 23;就是所谓的以间接引用的方式使用指针变量p指向的存储单元。
理论上,只要指针变量指向了某存储单元,就可以通过间接引用的方式使用该存储单元,但实际上为避免出现错误,应保证通过间接引用方式只使用合法的存储单元。
表达式p标识一个可以存储某类存储单元地址的存储单元,表达式*p标识p指向的存储单元。
9.10
pi不是空指针!程序的输出结果为:
可见在VC6.0中,没有赋值的局部指针变量会被赋值为0xcccccccc。
9.11
(1)无问题。
(2)无问题。
(3)有问题,其中p2 = *p1;错误,不能用整型变量给指针变量赋值。。
(4)有问题,指针变量p1指向了非法的存储单元,语句*p1=*p2;中使用了非法的存储单元。
(5)无问题。
(6)有问题。指针变量p1只能用整型地址赋值,语句p1=p2;中p2的结果并非整型地址而是整型指针地址。
9.12
程序的运行结果为:
a=1, b=7
m=6, n=9
分析如下:
语句a=p1==m;中p1==m先求值,因为指针变量p1指向了整型变量m,故求值结果为真,值为1,原语句变为a=1;。
在语句b=(++*p1)/(*p2)+5;中,*p1标识了变量m相关的存储单元,即其可与m互换,*p2可与n互换,原语句可变为b=(++m)/n+5;,变量b被赋值为7,且变量m自增1后变为6。语句n=*p1+*p2;可变为n=m+n;即n=6+3;。
9.13
(1) #includestdio.h
void main()
{
int a,b,c,*pa=a,*pb=b,*pc=c,t;
printf(请输入三个整数!\n);
scanf(%d%d%d, pa, pb, pc);
if(*pa *pb)
{
t = *pa;
*pa = *pb;
*pb = t;
}
if(*pb *pc)
{
t = *pb;
您可能关注的文档
最近下载
- 党小组工作职责与相关制度汇编.docx VIP
- 英语丨贵州省贵阳市2024届高三上学期8月摸底考试英语试卷及答案.pdf VIP
- 2025年杭州市房地产市场监测报告.doc VIP
- 仓库管理岗位职责仓库管理岗位职责精选.doc VIP
- TGDICST-粉类防晒化妆品 SPF 值体外测定方法.pdf VIP
- 高处作业施工专项方案.docx VIP
- 政府采购评审专家资格考试题库.doc VIP
- DB4412_T 19-2022 消防车道、救援场地和窗口标识设置规范.docx VIP
- 2025年5月三级人力资源管理师考试《理论知识》真题试卷【完整版】.pdf VIP
- 仓库管理规章制度.pdf VIP
文档评论(0)