将一个 char 传递给一个我理解的函数,有点(并使用指针进行操作 - 下面的代码交换 c1 和 c2 中的值)。
#include <iostream>
using namespace std;
int main(){
void swap(char* ,char* );
char c1 = 'a', c2 = 'b';
cout << "c1 = " << c1 << ", c2 = " << c2 << endl;
cout << "Now we swap." << endl;
swap(&c1, &c2);
cout << "c1 = " << c1 << ", c2 = " << c2 << endl;
return 0;
}
void swap(char* a,char* b)
{char temp = *a;
*a = *b;
*b= temp;}
但是一个字符串(其中一个字符串是一个声明为 char* a 或 char a[] 的 char 数组)然后像使用我不理解的指针一样进行操作(下面我想交换 cs1 和 cs2 但代码没有别这样做)。
#include <iostream>
using namespace std;
int main(){
void swap(char*[] ,char*[] );
char cs1[] = "Hello", cs2[] = "Goodbye";
cout << "cs1 = " << cs1 << ", cs2 = " << cs2 << endl;
cout << "Now we swap." << endl;
swap(&cs1, &cs2);
cout << "cs1 = " << cs1 << ", c2 = " << cs2 << endl;
return 0;
}
void swap(char* a[],char* b[])
{char* temp = *a;
*a = *b;
*b= temp;}
我想使用这些基本类型而不是 String 类中的某些类型来完成它。我只是在学习,并且想在进入更高层次的东西之前了解这一点。我的理解有什么问题吗?
PS 我正在使用 g++
最佳答案
指针确实很棘手,要完全掌握它们,您大量阅读有关它们的书籍、教程等非常重要。
#include <iostream>
using namespace std;
void swap(const char** , const char** );
int main(){
const char* cs1 = "Hello";
const char* cs2 = "Bye";
cout << "cs1 = " << cs1 << ", cs2 = " << cs2 << endl;
cout << "Now we swap." << endl;
swap(&cs1, &cs2);
cout << "cs1 = " << cs1 << ", c2 = " << cs2 << endl;
return 0;
}
void swap(const char** a, const char** b)
{
const char* temp = *a;
*a = *b;
*b= temp;
}
在您的代码中,您不能交换 cs1
和 cs2
,因为它们不是真正的指针。它们是数组,如何将一个数组与另一个数组交换?
如果你说 char hi[] = "TEST"
,hi
等同于说 &hi[0]
。它是第一个元素的地址。
为了使交换工作,您需要指向字符串的指针
。
关于c++ - 如何通过函数内的指针操作 char* 或 char a[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26694826/