如果是char定义的字符串需要传递参数就是用指针传参。
C语言风格的字符串例如:char str[] = "hello world";
通常适用于指针传递,因为它是一个字符数组,通过指向第一个字符的指针来访问整个字符串。在函数中对其进行修改或操作时,可以直接使用指针。
C++标准库中的std::string格式字符串通常适用于值传递或引用传递。当字符串对象很小且不需要修改时,最好使用值传递;当需要修改原始字符串时,应该使用引用传递。
Qt框架中的QString格式字符串也可以通过值传递或引用传递。如果QString对象很小且不需要修改时,最好使用值传递;当需要修改原始字符串时,应该使用引用传递。此外,在Qt中还有一些特殊的函数和机制可用于处理Unicode编码等其他方面的问题。
C语言风格的字符串:使用字符数组表示,以NULL结尾。例如:
char str[] = "hello world";
C++标准库中的std::string格式字符串:使用std::string类来表示,提供了丰富的字符串操作方法。例如:
std::string str = "hello world";
Qt框架中的QString格式字符串:使用QString类来表示,也提供了丰富的字符串操作方法。例如:
QString str = "hello world";
举例如下:
#include <iostream>
#include <string>
using namespace std;
int getFilePath(char *str_test1,const string& str_test2)
{
cout<< str_test1<<endl;
printf("%s\n", qPrintable(str_test2));
}
int main ()
{
char str_test1[] = "测试1";
QString str_test2 = "测试2\n";
getFilePath(str_test1,str_test2);
}
// 值传递
void func(int num) {
num = 10;
}
int main() {
int x = 5;
func(x);
cout << x; // 输出为5,因为func内部对num变量进行修改并不会影响x变量
}
// 指针传递
void func(int *p) {
*p = 10;
}
int main() {
int x = 5;
func(&x);
cout << x; // 输出为10,因为func内部通过指针修改了x变量的值
}
// 引用传递
void func(int &num) {
num = 10;
}
int main() {
int x = 5;
func(x);
cout << x; // 输出为10,因为func内部对num变量进行修改实际上就是对x变量进行修改
}