永发信息网

字符串可以这样赋值吗?

答案:4  悬赏:40  手机版
解决时间 2021-05-10 11:58
  • 提问者网友:最美的风景
  • 2021-05-09 11:58

#include<stdio.h>
int main()
{
char *string;
string="ksjk";
string="sjdhj";
printf("%s\n%s",string,string);
getch();
return 0;
}

为什么输出的结果两个都是sjdhj?,就算是输出一样的两个,也应该是ksjk啊?

最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-05-09 13:31

你定义的string是个指针,指针式没有内存空间的,它只指向地址,你的两个赋值语句string="ksjk";
string="sjdhj";
实际上是将字符串的首地址赋予了指针,并不是字符串本身,因此你的后一个赋值语句会将你前面的一个覆盖掉

全部回答
  • 1楼网友:逃夭
  • 2021-05-09 15:15

进行的copy操作,后一次把前面那次覆盖了,所以永远只能看到最后一次的操作

  • 2楼网友:玩世
  • 2021-05-09 14:47
内存总是存储变量最后一次值行的结果。
  • 3楼网友:旧脸谱
  • 2021-05-09 13:59
string是个字符指针,执行string="ksjk";时是把字符串"ksjk"的首地址赋给string。同理,执行string="sjdhj";时是把字符串"sjdhj"的首地址赋给string。因为string="sjdhj";是后执行的,所以string最后保存的值是字符串"sjdhj"的首地址,输出的结果自然也都是"sjdhj"。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯