鱼C论坛

 找回密码
 立即注册
查看: 819|回复: 3

[已解决]作业求助

[复制链接]
发表于 2020-12-12 01:39:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下程序的输出结果是(  )。
#include "stdio.h"
#include "string.h"
int main( )
{
        char a[30]="How are you";
        strcpy(a+4,"do ");
        printf("%s",a);
        return 0;
}
A. How do      B. How do you      C. do        D. How are you do
这道题为什么选A?那个a+4是什么意思,
然后如果没有a+4是不是选B
最佳答案
2020-12-12 14:01:02
对于 a是一个地址,或者你理解为什么数组指针都行
a+4就是向后挪动4个单位长度的地址
strcpy函数的用法就是将“do ”这个复制到以a+4对应的起始处的一段内存中
按照你的理解,你会理解为 把are 替换成了 do
但是printf %s 读取的时候,它理解的是以'\0'结尾的字符串,你觉得“do ”这个有没有一个'\0'的存在?
具体再体会下图
微信截图_20201212135524.png
其实you 不见了没?没有,但是为什么不显示,是因为 '\0'结尾的字符串 所导致
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-12 07:53:30 | 显示全部楼层
数组名就是就指向数组第一个元素的指针,那么数组名+i就是指向数组中第i个值的指针。然后利用strcpy函数将字符串do放入了a[4]及之后的位置,所以选A。没有strcpy那行的语句时选B,如果把a+4换成a则选c。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-12 09:55:40 | 显示全部楼层
A答案正确,strcpy()从 a 数组的第 4 个字符开始,将其参数2的内容拷贝到数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-12 14:01:02 | 显示全部楼层    本楼为最佳答案   
对于 a是一个地址,或者你理解为什么数组指针都行
a+4就是向后挪动4个单位长度的地址
strcpy函数的用法就是将“do ”这个复制到以a+4对应的起始处的一段内存中
按照你的理解,你会理解为 把are 替换成了 do
但是printf %s 读取的时候,它理解的是以'\0'结尾的字符串,你觉得“do ”这个有没有一个'\0'的存在?
具体再体会下图
微信截图_20201212135524.png
其实you 不见了没?没有,但是为什么不显示,是因为 '\0'结尾的字符串 所导致
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 10:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表