C++代码方面的问题
#include "iostream.h"
#include "stdio.h"
void Change_1(char& k1,char &k2)
{
char k1[]="good";
char k2[]="hello";
}
void main()
{ char i[]="hello",char t[]="good";
char *p1=&i,*p2=&t;
Change_1(*p1,*p2);
cout<<*p1<<*p2;
}
这是我写的一个程序,问题颇多。我想的是用引用来调换两个字符串的位置,我是个初学者,请高手帮我。并帮我指出错误!谢谢
追问:如果我想在主函数中用指针 ,应该怎么用啊?还有那个COUT那块你的解释我不是很清楚,请帮我解释一下,谢谢
答案:
char *p1=&i,*p2=&t; 有问题
p1,p2是字符指针,但你却将 &i &t(这两个类型是char (*)[] 即指向数组的指针,你可以理解为行地址)赋予pi,p2,明显是类型不对嘛!
而在Change_1(char& k1,char &k2) 形参是字符的引用,但你却与char (*)[] 类型绑定。
而且在函数体内 k1,k2 与形参重名。另外 在这个函数中你仅仅是对 字符数组来赋值。
而且在输出的时候 cout是 命名空间std中所定义 使用时要用作用域运算符 std::cout
或 using 指示 即 using namespace std;
你对指针理解还不够,还是使用string来来存放字符串吧!这样你容易理解。
//void swap( basic_string &str );
//swap()函数把str和本字符串交换。
#include<iostream>
#include<string>
using namespace std;
void Change_1(string &k1,string &k2)
{
k1.swap(k2);
}
int main()
{
string i="hello", t="good";
cout<<i<<" "<<t<<endl;
Change_1(i,t);
cout<<i<<" "<<t<<endl;
}
char开始的时候是空值NULL的,才可以付值,但是循环没有啊?我只看到你是判断字符。
上一个:高手帮忙改改C++代码
下一个:帮忙看下C++代码!!!