c语言常见笔试题及答案(21).docx

上传人:1513****116 文档编号:94237409 上传时间:2023-07-27 格式:DOCX 页数:3 大小:12.36KB
返回 下载 相关 举报
c语言常见笔试题及答案(21).docx_第1页
第1页 / 共3页
c语言常见笔试题及答案(21).docx_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《c语言常见笔试题及答案(21).docx》由会员分享,可在线阅读,更多相关《c语言常见笔试题及答案(21).docx(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 c语言常见笔试题及答案(21) c语言常见笔试题及答案 一个32位的机器,该机器的指针是多少位 指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。 main() int a5=1,2,3,4,5; int *ptr=(int *)(a+1); printf(%d,%d,*(a+1),*(ptr-1); 输出:2,5 *(a+1)就是a1,*(ptr-1)就是a4,执行结果是2,5 a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int) int *ptr=(int *)(a+1); 则ptr实际

2、是(a5),也就是a+5 缘由如下: a是数组指针,其类型为 int (*)5; 而指针加1要依据指针类型加上肯定的值, 不同类型的指针+1之后增加的大小不同 a是长度为5的int数组指针,所以要加 5*sizeof(int) 所以ptr实际是a5 但是prt与(a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*) a,a的地址是一样的,但意思不一样,a是数组首地址,也就是a0的地址,a是对象(数组)首地址,a+1是数组下一元素的地址,即a1,a+1是下一个对象的地址,即a5. 1.请问以下代码有什么问题: int main() char a; char *str=a; strcpy(str,hello); printf(str); return 0; 没有为str安排内存空间,将会发生特别 问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但由于越界进展内在读写而导致程序崩溃。 char* s=AAA;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁