作业求助
以下程序的输出结果是()。#include "stdio.h"
#include "string.h"
int main( )
{
char a="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 数组名就是就指向数组第一个元素的指针,那么数组名+i就是指向数组中第i个值的指针。然后利用strcpy函数将字符串do放入了a及之后的位置,所以选A。没有strcpy那行的语句时选B,如果把a+4换成a则选c。 A答案正确,strcpy()从 a 数组的第 4 个字符开始,将其参数2的内容拷贝到数组 对于 a是一个地址,或者你理解为什么数组指针都行
a+4就是向后挪动4个单位长度的地址
strcpy函数的用法就是将“do ”这个复制到以a+4对应的起始处的一段内存中
按照你的理解,你会理解为 把are 替换成了 do
但是printf %s 读取的时候,它理解的是以'\0'结尾的字符串,你觉得“do ”这个有没有一个'\0'的存在?
具体再体会下图
其实you 不见了没?没有,但是为什么不显示,是因为 '\0'结尾的字符串 所导致
页:
[1]