作业帮 > 综合 > 作业

C语言,阅读下列程序,则在执行后,程序的运行结果为 ?

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/04/29 23:39:32
C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
阅读下列程序,则在执行后,程序的运行结果为
main()
{
char a[30]="nice to meet you!";
strcpy(a+strlen(a)/2,"you");
printf("%s\n",a);
}
A. nice to meet you you B. nice to
C. meet you you D. nice to you
这个是什么意思呢 strcpy(a+strlen(a)/2,"you"); ,特别是a+strlen(a)的结果是什么?
C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
strcpy 这个函数是把后面那个字符串拷贝到前面那个字符串里面.
a是字符串"nice to meet you!"的首地址,strlen(a)是计算字符串a的长度结果为17.
那么a+strlen(a)/2就是a + 17 / 2就是a + 8,意思是从a后面第8个位置开始接受拷贝.
strcpy(a+8,"you"); 就相当于把 "you" 接到a后面第8个位置 结果就是nice to you.答案D
再问: 数组a+8是a的第八个位置,那如还是这个字符数组a,如果有式子 a+1== ‘i’ ,会不会成立呢?
再答: 你的意思是这样吧:*(a + 1) == 'i' 这个是成立的
再问: 那如题,a+strlen也是指地址,a+1==‘i’为什么就要加上指针*才算地址呢?
再答: 首先 指针就是地址,地址就是指针,属于同一个概念。 a是一个指针,或者叫地址吧,那么对a 加一个数字,或者减一个数字,这个地址就发生变化了,但它还是一个地址啊,比如你家的门牌号地址是1026,对你家的门牌号加8,变成了1034,这个新的地址就相当于从你家往后面移动了8个位置。* 号是取地址指向的内容的操作符。 比如:*(1026)取出你们家的内容,*(1026 + 8)取出你们家往后第8户人家的内容。 所以你的这句a+1==‘i’不对,不能拿地址和内容比较,*(a+1)这是取出a后面第一个位置的内容,内容和内容之间才能比较。