C语言程序如下,输出为什么是goodgood!????
答案:3 悬赏:50 手机版
解决时间 2021-01-09 12:03
- 提问者网友:wodetian
- 2021-01-08 17:51
C语言程序如下,输出为什么是goodgood!????
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-01-08 18:54
程序从头到尾就没有对字符数组s进行赋值,当然最后输出s时候是goodgood!
sp="to"; sp指针指向字符串常量"to" ,估计是当摆设的追问是不是sp指向了goodgood!第二个o
然后又指向了“to”的t,之前指向的o就作废了???追答#include
#include
main()
{ char s[20]="goodgood!",*sp=s;
sp=sp+2;
sp="to"; //sp即使在之前自加了2,最后却指向了“to”,那么sp的值是to
puts(s);
puts(sp); //输出是to
}
sp="to"; sp指针指向字符串常量"to" ,估计是当摆设的追问是不是sp指向了goodgood!第二个o
然后又指向了“to”的t,之前指向的o就作废了???追答#include
#include
main()
{ char s[20]="goodgood!",*sp=s;
sp=sp+2;
sp="to"; //sp即使在之前自加了2,最后却指向了“to”,那么sp的值是to
puts(s);
puts(sp); //输出是to
}
全部回答
- 1楼网友:woshuo
- 2021-01-08 19:45
sp是指针,存的是地址值
sp="to" ; //这是将常量字符串"to"的地址存储到sp中!
sp +=2 ;指向了第二个o的位置
puts(s) ; //s没动,还是数组首地址,所以,输出goodgood!追问是不是sp指向了第二个o
然后又指向了“to”的t,之前指向的o就作废了???追答int a=5, i=a; 先给i一个a( 5 )
i=6; 再给i一个6,i与a就没关系了,但a=5并没有消失。
sp="to" ; //这是将常量字符串"to"的地址存储到sp中!
sp +=2 ;指向了第二个o的位置
puts(s) ; //s没动,还是数组首地址,所以,输出goodgood!追问是不是sp指向了第二个o
然后又指向了“to”的t,之前指向的o就作废了???追答int a=5, i=a; 先给i一个a( 5 )
i=6; 再给i一个6,i与a就没关系了,但a=5并没有消失。
- 2楼网友:街头电车
- 2021-01-08 19:21
sp="to";
这里的"to"是一个字符串常量,就跟int类型常量是一样的(比如写一个100),上面那句话的意思是sp指向"to"这个字符串常量的地址。
也就是说sp先指向数组s的地址,后面又变更成字符串常量"to"的地址。数组s没有发生变化,所以还是打印goodgood!了。追问是不是sp指向了goodgood!第二个o
然后又指向了“to”的t,之前指向的o就作废了???追答之前的o作废是???这个作废怎么理解?
sp 以前指向 从goodgood!第二个o的地址
更改为 “to”的t所在的地址
只是指向的地址变化了。追问我意思不是o作废,而是sp不再指向它了。。追答对没错,就是这个意思。
这里的"to"是一个字符串常量,就跟int类型常量是一样的(比如写一个100),上面那句话的意思是sp指向"to"这个字符串常量的地址。
也就是说sp先指向数组s的地址,后面又变更成字符串常量"to"的地址。数组s没有发生变化,所以还是打印goodgood!了。追问是不是sp指向了goodgood!第二个o
然后又指向了“to”的t,之前指向的o就作废了???追答之前的o作废是???这个作废怎么理解?
sp 以前指向 从goodgood!第二个o的地址
更改为 “to”的t所在的地址
只是指向的地址变化了。追问我意思不是o作废,而是sp不再指向它了。。追答对没错,就是这个意思。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯