我很清楚这方面的说明效率很低/几乎已经过时。我实际上使用字符串开发了一个简单得多的解决方案,但是出于教育目的,我的大学决定要求使用指针和char数组而不是字符串来解决此问题。
基本上,我需要传递一个预定义的char数组(一个特定的短语),并将其返回反向。
到目前为止,我的输出是绝对乱码(有些字符甚至无法在此处键入),所以我认为我必须做错了什么,但我不明白为什么。
为了进行实验,我尝试在函数体末尾手动将* ptr_cha分配为类似“ Hello”的名称,但是随后遇到类型转换错误。如果我手动将temp [0]分配为“ hello”,并跳过 for 循环,然后在最后简单说* ptr_cha [0]等于temp [0],我仍然会得到胡言乱语。 而且,如果我尝试在函数开始时输出clone的内容(在说它等于ptr_cha [0]之后),它会说内容是“ d”,即原句中根本没有的字母。 / p>
这是我的完整代码:
#include <iostream>
#include <wchar.h>
#include <locale.h>
#include <array>
using namespace std;
void invertChar(char *ptr_cha[]);
int main()
{
setlocale(LC_ALL,"");
char sentence[] {"Pablito clavó un clavito que clavito clavó Pablito"};
char *ptr_sentence[] {nullptr};
*ptr_sentence = sentence;
invertChar(ptr_sentence);
cout << ptr_sentence[0];
};
void invertChar(char *ptr_cha[]) {
char clone[] = {""};
char temp[] = {""};
ptr_cha[0] = clone;
int length = sizeof(clone)/sizeof(*clone);
int j = length;
for(int i = 0; i < length; i++) {
temp[i] = clone[j];
j--;
};
*ptr_cha[0] = temp[0];
};
如前所述,该想法是将句子设置为倒置形式并显示在输出中。
还有一个附带的问题:为什么在c ++中计算char数组的长度是如此复杂/冗长?对于字符串,有一个简单的方法,在这里您必须执行整个“技巧”,将数组的大小除以其引用的大小。我什至看不到数组的存储大小除以其指针的存储大小如何返回数组的长度...