|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 shiyideliutang 于 2019-9-25 21:11 编辑
已经知道:当我们把一个指针做为参数传一个函数时,其实是把指针的复本传递给了函数,也可以说传递指针是指针的值传递。所以我才用指针的引用方式来解决这个问题。最开始使用的测试程序如下【这个程序和自己预测的一样,可以改变】
- #include <iostream>
- using namespace std;
- void change(char *&q)
- {
- q = "qwer";
- }
- int main()
- {
- char *p = "abcd";
- cout << "原始的:";
- while((*p) != '\0')
- {
- cout << *p;
- p++;
- }
- change(p);
- cout << "改变的:";
- while((*p) != '\0')
- {
- cout << *p;
- p++;
- }
- }
复制代码
但是下面这个程序确和预测的不一样,没法改变了,不知道问题到底出现在哪里,还请大佬们帮忙解决问题,多谢多谢!!!
- #include <iostream>
- using namespace std;
- #include <string.h>
- //将string类型转化为char*类型
- bool string_char(string str, char *&p)
- {
- int len = str.length();
- p = new char[len*2];//开辟足够大的内存存储
- int n = str.copy(p, len, 0);
- p[len] = '\0';
- cout << "\n过程中的";
- while((*p) != '\0')
- {
- cout << *p;
- p++;
- }
- if(n == len)
- return true;
- return false;
- }
- int main()
- {
- string str = "aaaaaaa";
- char *q = "afggt";
- cout << "原始的";
- while((*q) != '\0')
- {
- cout << *q;
- q++;
- }
- string_char(str, q);
- cout << "\n改变后的";
- while((*q) != '\0')
- {
- cout << *q;
- q++;
- }
- return 0;
- }
复制代码
-----------------------------------------------------------
运行结果为:
原始的afggt
过程中的aaaaaaa
改变后的
|
|