永发信息网

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
}
全部回答
  • 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并没有消失。
  • 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不再指向它了。。追答对没错,就是这个意思。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯