一个C语言指针比较大小的问题

elson1024 发布于 2013/12/09 22:49
阅读 3K+
收藏 5
c
  3 void reverse_char(char *str){
  4     char *last_char;
  5     last_char = str;
  6     while(*last_char != '\0'){
  7         last_char++;
  8     }
  9     last_char--;
 10     while(str < last_char){
 11         char temp = *str;
 12         *str++ = *last_char;
 13         *last_char-- = temp;
 14     }
 16 }
 17
 18 int main(void){
 19    
 20     char str[] = "hello";
 21     reverse_char(str);
 22     printf("%s\n", str);
 23     return 0;

 24 }

这个反转字符的逻辑很简单,但有点不明白的就是第10的while(str < last_char)这句,

指针存放的内容不是类似于1000H, 2000H 这样的数据的么?怎么就是可以像数字那样当成整形数据那样比较大小了?还是说死记就行了?

     

加载中
0
fzyz_sb
fzyz_sb

地址是可以比较的:

#include <stdio.h>
#include <string.h>

void reverseString( char *str )
{
	char ch;
	char *temp = str;
	while ( *str ){
		str++;
	}
	str--;
	while ( temp < str ){
		printf("temp:%u--%c   str:%u--%c\n", temp, *temp, str, *str );
		ch = *temp;
		*temp++ = *str;
		*str-- = ch;
	}
}

int main( void )
{
	char str[] = "hello world";
	reverseString( str );
	printf("\n%s\n", str );

	return 0;
}



程序输出:

要学会自己调试.楼主加油.

0
jingweiyoung
jingweiyoung
这个翻转不好
0
修改登录密码
修改登录密码
指针其实就是内存地址的一种抽象说法, 地址是可以比较大小的
0
张亦俊
张亦俊
你不觉得2000H比1000H大么?
0
一点夜月
一点夜月
你要弄懂数据在内存中的存放方式才行
0
偃鼠饮河
偃鼠饮河
指针是个地址,地址是个数字,自然可以比较大小。
0
中山野鬼
中山野鬼
楼主建议把算法研究清楚,对应语言的语法使用说明,就搞清楚了。哈哈。
0
泡不烂的凉粉
泡不烂的凉粉
楼主代码写的是出神入化.小生佩服. 敢问是自己想出来的吗?
0
elson1024
elson1024

引用来自“正想着改什么名好”的答案

楼主代码写的是出神入化.小生佩服. 敢问是自己想出来的吗?

不是我想出来,抄社区一个朋友来研究的

佩服是吧?来!跪地,斟茶,叩头,资质差了点,不过看在你为我顶贴的份上,为师勉强收你为徒

0
elson1024
elson1024

引用来自“雷朝建”的答案

地址是可以比较的:

#include <stdio.h>
#include <string.h>

void reverseString( char *str )
{
	char ch;
	char *temp = str;
	while ( *str ){
		str++;
	}
	str--;
	while ( temp < str ){
		printf("temp:%u--%c   str:%u--%c\n", temp, *temp, str, *str );
		ch = *temp;
		*temp++ = *str;
		*str-- = ch;
	}
}

int main( void )
{
	char str[] = "hello world";
	reverseString( str );
	printf("\n%s\n", str );

	return 0;
}



程序输出:

要学会自己调试.楼主加油.

我的天!明白,就是你了
返回顶部
顶部