您的位置:广东在线游戏网 > 游戏资讯 > C语言中while(*s++=*t++)等价于什么?

C语言中while(*s++=*t++)等价于什么?

作者:广东在线游戏网日期:

返回目录:游戏资讯


void strcpy(char t[],char s[]) {
while(*t++ = *s++);
}
以上就是一个完整的字符串zhidao复制函数,不再需要其他操作。在下面的语句中,
do {
*t++ = *s++;
}while(*s);
复制到最后一个字符后,完成 t++ 和 s++操作,此时s指向'\0',从而结束循环,也就是说,该过程没有将结束符'\0'写到t中。

while(*s++=*t++)
这里实现了四个操作。
1 *s = *t, 即将s指向内存赋值为t指向内存的值;
2 执行s的自加操作;
3 执行t的自加操作;
4 判断执行自加前的*s值,如果*s为0,那么退出循环。
可以写成等价的for循环。
for(; *s; s++, t++)
*s = *t;
int aaa(char *s)
{
char *t=s;
while (*t++);
判断*t的值:
1,如果不为0,则继续while循环,执行t++,指针指向下一个
2,如果为0,跳出while循环,执行t++,指针指向下一个

t--;
return (t-s);
}

比如数组char temp[] = {1, 2, 3, 4, 5, 6, 7, 0, 8, 9};
执行aaa(temp);
那么当while(temp[7])时(temp[7] = 0;),跳出循环,t = temp[8] = 8;
然后t--;
t= temp[7] = 0;
t-s就是从temp[0]到temp[7]跳过了多少地址空间,答案是7。

不知道你明白了没有?希望对你有帮助!

说起来复杂,直接改写一个do-while循环就好理解了:do{*s=*t++;} while(*s++);

如果硬要解释原程序的话,那表示的是指针t所指向数组的元素赋值给s所指向数组,并且t指针和s指针向后移动一位。具体来说:

  1. 先将*t的值赋给等号左边,然后t指向地址往后面移动一位。

  2. 因为++自增运算表示的一些特殊性,s++表示的是s自增之前的地址,故*s++表示的还是原来的地址上的值(也就是原来的*s),这时候就会被赋值为*t(在t指针还没移动前的值)。

  3. while循环判断*s的值是否是0,不是0就进入循环,并且s指向位置后移。如果是0,出循环,s指向位置依然后移一位。

注意:不管这个while循环进不进入,s和t指向地址都会往后移动一位。

相关阅读

  • C语言中while(*s++=*t++)等价于什么?

  • 广东在线游戏网游戏资讯
  • void strcpy(char t[],char s[]) { while(*t++ = *s++);}以上就是一个完整的字符串zhidao复制函数,不再需要其他操作。在下面的语句专中,do { *t++ = *s++;}while(*s);复制到最后一个字符后,完成 t++
关键词不能为空

标签导航

《哈利波特》中所有人物的名字来源以及人物关系 《哈利波特》中所有出场人物的名字 《哈利波特》几部书中都有哪些人物??? 哈利波特电影中,主要的演员都是谁?分别扮演什么角色? 求王敏德的一部电影 求王敏德演过的一部电影 王敏德演的一部电影女的演戏被刺杀电影叫什么的 求一部王敏德早期电影名 求解释C语言do{*t++=*s++;}while(*s);... 请问这个函数的功能是 ?sss(s ... 难... t) char *s 为什么while(*s++=*t++)的作用是复制字符串 C语言中while(*s++=*t++)等价于什么? 老公不能生育是借种生子还是离婚 老公不育的事实,婚后婆婆让我跟小叔子借种,我能去吗 老公不育 我老公不能生育,我借种生子 可以借精生子 得多少钱 魔兽世界采药到100去哪练? wow采矿和采药100了都去哪练好呢(要一起练的) 魔兽世界草药学100-150去那里挖 魔兽世界采药75-100 去哪? 100-125 去哪? 详... 有小宝宝了起名的九江市哪 个公‍司‍好些啊... 九江有那些特色美食? 九江有什么特色美食 美食起名 正版的微软win10系统多少钱? 微软官方正版win10系统密钥 多少钱 电脑一个正版的win10系统多少钱 电脑去装一个win10多少钱左右 滑动解锁用拼音怎么写? 电脑锁屏密码怎么打拼音 脸部解锁的拼音是什么? 手机锁屏密码是混合密码!原来打开解锁都是安全键盘,现变成九格... 巫师3为啥叫巫师 主角不是狩魔猎人吗 witcher翻译成巫师,有几个原因 为什么“巫师”并不是一个错译 为什么有人把这个游戏 《The Witcher》系列为什么翻译成《巫师》 请问漆黑的魅影5.0捷克罗姆和烈希拉姆 两只从70lv开始抓... 口袋妖怪漆黑的魅影中烈拉希姆与捷克罗姆分别在哪? 口袋妖怪漆黑的魅影5.0的烈希拉姆和捷克罗姆和融合后的酋雷姆... 口袋妖怪漆黑的魅影4.5烈希拉姆和捷克罗姆怎么配招 win10没有收到更新通知怎么办?如何最快获取最新版更新 win10没有收到更新通知,怎么最快获取最新版更新 怎么让电脑接收win10自动推送升级 求解,什么辅助是万金油,什么ADC都能配 关于婕拉辅助抢兵各位ADC怎么看 英雄联盟EZ搭配的辅助选择:婕拉 风女 奶妈(我只有这三个请... 奶妈辅助配什么adc最好 魔兽世界中SS60及职业任务 千金马 到底怎么做啊? wow 安戈洛环形山的座骑任务怎么做?