大佬教程收集整理的这篇文章主要介绍了为什么这个反向字符串函数会产生seg错误?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
void reverse_str(char s[]) { int i,j; char ch; for(i = 0,j = strlen(s) - 1; i < j; i++,j--) { ch = s[i]; s[i] = s[j]; s[j] = ch; } return ; }
请考虑弦鼓的以下顺序:
0123 <- indexes ---- s = "drum",i = 0,j = 3,swap d and m. s = "mrud",i = 1,j = 2,swap r and u. s = "murd",i = 2,j = 1,swap u and r,oops,we've passed each other. s = "mrud",i = 3,j = 0,swap m and d. s = "drum",i = 4,j = -1,swap who kNows what,undefined behavIoUr.
请注意,对于具有奇数长度的字符串,您将不会遇到此问题,因为我最终等于j(在中间字符处).
i< j check也修复了这个问题,因为它检测到指针相等和指针相互传递.
以上是大佬教程为你收集整理的为什么这个反向字符串函数会产生seg错误?全部内容,希望文章能够帮你解决为什么这个反向字符串函数会产生seg错误?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。