【发布时间】:2015-04-23 07:05:58
【问题描述】:
我只需要使用指针来反转我的 char 字符串。我怎样才能做到这一点?我的代码:
// this cannot be modified !!!
char s[10] = "abcde";
char *pS;
// my code
pS = new char;
int count = 5;
for (int i = 0; i < 10; i++)
{
if (s[i] != '\0') // not null
{
pS[count - 1] = s[i];
count--;
}
}
cout << "Reversed = " << pS;
有时如果工作正常,我只看到 5 个字符,它们被颠倒了。但有时我会看到一些额外的字符(看起来像临时符号)。我在哪里错过了什么?谢谢!
【问题讨论】:
-
您不应使用硬编码数字。使用 strlen 查找长度。
-
pS = new char;为 singlechar分配空间,而不是数组。 -
您是应该创建一个新字符串还是原地反转原字符串?目前尚不清楚“无法修改”是什么意思。
-
致 molbdnilo:我需要在 pS 变量中存储反向字符串致 CreativeMind:这只是测试代码,我想完全理解指针:) 致 πάντα ῥεῖ:是的,我明白了。但是我的 pS 如何仍然存储一个分配一个字符的反转字符串?
-
@VladyslaveSemenchenko “但是我的 pS 如何仍然存储反向字符串并分配一个字符?” 访问未分配的内存只是未定义的行为,可能会或可能不会“工作”。
标签: c++ arrays string pointers