- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言指针演习
作业
关于本次作业的几点说明:
1、本次作业关于指针部分的内容需要同学们先自学相关知识(师父)
2、本次作业的起评分为75分
本次作业解决方法:
先粗略将书本相关知识内容看一遍;
选择书本、PPT和参考资料中的一些简单例题先学习,达到能理解或仿做的程度;
如果遇到问题:
(1)通过debug观察程序运行中各个变量(特别是指针变量)的取值变化情况,如果遇到问题或不明白之处再去查阅书本相关知识点,对于书本上的知识点,一定要自己设计一些代码片段去验证,去观察!切忌:只是看看而已!
(2)与同学讨论:不要求对方要懂,而是双方一起探讨、互相启发,从讨论过程逐渐明白一些新的知识内容,发现自己的认识不足,即使不能立竿见影能解决作业问题,但这个过程已经是一个很好的学习过程了。
(3)到机房上机,找师兄们答疑;
(4)到网上寻找学习资料,如各个学校学习C语言的精品网站,也可以搜索一些学习指针的网文,以及教学用书的配套习题解答等。
一、实验及思考
1、运行程序,根据运行结果回答问题。
⑴ #includestdio.h
void main()
{
double d=123;
double *pd=d;
printf(pd=%d\n,pd);
printf(pd=%d\n,*pd);
printf(pd=%lf\n,*pd);
}
① pd变量的数据类型是double型吗?double型变量的长度是多长?pd的数据长度是多长?(提示:VC中为每个double、int型变量分配的空间大小可以用sizeof(double)和sizeof(int)运算获得;同时,还可以用sizeof(pd)获得pd变量的数据长度)
② printf(pd=%d\n,pd)语句中输出的数值代表什么?
③ *pd代表的是什么?
④ main函数中的三条printf语句,你认为哪一条语句的输出结果不合法?
⑤ 语句int * p=200;编译时有错误,请结合错误提示和书本相关知识,解释错误原因并修改;
⑥ 下列语句编译时有错误,请解释错误原因并修改。
int * p;
double * q;
p=q;
⑦ *pd=2000?;语句改变的是pd的值吗?pd=(double*)2000?;语句改变的又是哪个变量的值?
2、void main()
{
int a[4];
int * p=a[0];
int * q=a[1];
int k=q-p;
printf(p=%d\n,p);
printf(q=%d\n,q);
printf(k=%d\n,k);
}
p、q分别代表的是什么?
k代表的是什么?你认为k的输出结果合理吗?为什么?
3、
{
char * s=abcd;
while(*s) printf(%s\n,s++);
}
要求:
① 给出运行结果,并请解释何以会产生如此输出;
② 若char *s=abcd;改为char s[]=abcd;能否得到相同结果,请说明理由
提示:
对于第一问,利用VC 的单步跟踪功能观察s的变化情况,并利用watch窗口观察每次s++后,s、s[i]和*s的取值情况。
4、请先运行程序,根据运行结果回答问题。
void main()
{
int sum=0;
char s[]=a1d2f3ah45si7d90, *p;
for(p=s+5; *p!=\0; p++)
if(*p=0*p=9)
sum=sum*10+*p-0;
printf(sum=%d\n,sum);
}
要求:
请说明以上程序的功能,并回答以下问题:
①for(p=s+5; *p!=\0; p++) 语句的功能是什么?
②p=s+5;语句执行后p的值保存的是哪个变量的地址?
③语句int j,k,a[5],*p;不需要改动,而且除了本条语句,其它语句中都不允许出现“[”和“]”。
提示:
(1)调试此程序时,利用watch窗口观察每次p++后p的值,以及*p对a数组内容的影响。为了观察方便,可以将a设置为一个watch点,数组a所有元素的值在一列全部显示出来。调试时注意指针变量指向哪个目标变量。
(2)如果此题都不能难住你,那只能说明一点:你的学习能力超强,呵呵,从此便可在C学习旅途上绝尘而去,王子与公主过上了幸福生活(呃,抱歉拿错讲稿了)。
6、阅读程序,按要求,在空白处填写适当的表达式或语句,使程序完整,并符合题目要求。
① 下面函数实现strlen函数的功能,即计算指针p所指向的字符串中的实际字符个数。
unsigned int MyStrlen(char
文档评论(0)