数据结构与算法-字符串反转

百度2014笔试题: 字符串反转,要求不能使用系统函数,参数和返回值都是char指针。

#include 
char *reverse_str(char *str){
	int length=0;
	char *start=str;     //可以复制指针
	while(*start){      //“指针不为空”的表示法
		length++;
		start++;
	}
	int i;
	char tmp;
	for (i=0;i




总结:
1. 指针不为空-方法a:while(*str){}
        -方法b:  while(*str!='\0'){} // 必须是单引号,双引号表示string
2. 数组元素值操作-方法a
tmp=*str;
*str=*end;
*end=tmp;
                -方法b:
tmp=str[i];
str[i]=str[length-1-i];
str[length-1-i]=tmp;

待解问题:
http://blog.csdn.net/michellechouu/article/details/46787949 
该方法为void,函数里str最后指向字符串中间元素,为什么printf(“%s”,str)可以输出整个反转的字符串?
假设:str在作为函数参数时,相当于复制了一个str指针,函数里面的str++操作并不改变原本的str指针,而只是改变了复制的str指针。


参考文章:
http://www.1dke.com//bianchengxuexi/76.html
http://blog.csdn.net/michellechouu/article/details/46787949 

你可能感兴趣的:(上下求索-获得新知)