打印
[C语言]

字符串常量可以反转吗?

[复制链接]
922|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-7-19 16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2018-7-19 17:11 | 只看该作者
什么叫字符串反转,
我还真不知道
字符串都是按字节顺序保存的,为什么要反转,有意义吗

使用特权

评论回复
板凳
linqing171| | 2018-7-19 21:04 | 只看该作者
c#里面的字符串类有个reverse函数。
如果是字符数组,可以 for(i=0;i<len/2;i++) {t=a[i];a[i]=a[len-1-i];a[len-1-i]=t;}
如果是翻转到另外一个数组里  for(i=0;i<len;i++) b[i]=a[len-i-1];

使用特权

评论回复
地板
junyee| | 2018-7-23 11:54 | 只看该作者
linqing171 发表于 2018-7-19 21:04
c#里面的字符串类有个reverse函数。
如果是字符数组,可以 for(i=0;i

第二个方法可以用异或..


for(i=0,j=LEN-1;  j>i ; i++,j--){
  str[i]= str[i] ^ str[j];
  str[j]= str[i] ^ str[j];
  str[i]= str[i] ^ str[j];
}


使用特权

评论回复
5
linqing171| | 2018-7-23 12:41 | 只看该作者
junyee 发表于 2018-7-23 11:54
第二个方法可以用异或..

你的这个LEN-1只计算了一次,后续是用的++和-- 有时候能节省计算量。
你这个用亦或,节省了一个临时变量。有些编译器在窥孔优化阶段也能生成出此类代码来。

使用特权

评论回复
6
yanghelovehuang|  楼主 | 2018-7-23 14:44 | 只看该作者
ayb_ice 发表于 2018-7-19 17:11
什么叫字符串反转,
我还真不知道
字符串都是按字节顺序保存的,为什么要反转,有意义吗 ...

这是面试考察指针知识,数组等的题,就和上学学的都没用一样,但是必须知道

使用特权

评论回复
7
yanghelovehuang|  楼主 | 2018-7-23 14:46 | 只看该作者
linqing171 发表于 2018-7-19 21:04
c#里面的字符串类有个reverse函数。
如果是字符数组,可以 for(i=0;i

这个我知道 一半反转的都是字符数组,我是想知道字符串常量可以反转吗?

使用特权

评论回复
8
junyee| | 2018-7-23 19:13 | 只看该作者
yanghelovehuang 发表于 2018-7-23 14:46
这个我知道 一半反转的都是字符数组,我是想知道字符串常量可以反转吗? ...

常量就是任何时刻都不能修改的 "变量".

使用特权

评论回复
9
airwill| | 2018-7-23 19:24 | 只看该作者
反转, 曾经在 ARM 的指令里有个字反转. 就是按位颠倒过来.
若依次推论, 那么字符串反转, 是前后对调比较好理解一点.
但也可能每个字符的高低位也要颠倒过来呢?
所以, 这个定义不明确的

使用特权

评论回复
10
yanghelovehuang|  楼主 | 2018-7-24 10:10 | 只看该作者
junyee 发表于 2018-7-23 19:13
常量就是任何时刻都不能修改的 "变量".

我测试了下,
char *s = "fsfsgds",
printf("%c", *s);
s++;
printf("%c", *s);
结果是fs。
那我们把两个*s交换位置不就互换了吗

使用特权

评论回复
11
yanghelovehuang|  楼主 | 2018-7-24 16:11 | 只看该作者
fxmxh 发表于 2018-7-24 11:03
abcd=dcba么?常量就是常量,看你本来的意思就是把一个字符串转变成另一个顺序与之相反的另一个字符串。不 ...

谢谢啊 大神们

使用特权

评论回复
12
junyee| | 2018-7-26 13:06 | 只看该作者
yanghelovehuang 发表于 2018-7-24 10:10
我测试了下,
char *s = "fsfsgds",
printf("%c", *s);

我不知道你要说明的是什么?
---
*s:      :  fsfsgds
*(s++) :  fsfsgds

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝