我们知道,通常我们定义的函数很多都是带参数的,用来传入和传出数据,下面,我将举例来演示传入传出过程。
1.无传入,无传出。
class Cout{
public:
static int x;
static int y;
int add();
};
int Cout::x=5;
int Cout::y=6;
int Cout::add()
{
int z=x+y;
return z;
}
int main()
{
Cout c;
cout<<c.add()<<endl;
}
结果:
分析:这是计算类中的两个静态成员变量,我们并没有在add函数中进行传递参数,也可以获得结果。
2.有传入,无传出。
int Add(int x,int y)
{
return x+y;
}
int main()
{
cout<<Add(1,2)<<endl;
}
结果:
分析:这是一个简单的加法函数,只将参数传入函数,不传出参数,但是我们可以通过return获取需要的结果。
3.无传入,有传出。
class Send{
public:
bool A(char* a);
bool B(char* b);
};
bool Send::B(char* c)
{
char b[4]="aaa";
strcpy(c,b);
return true;
}
bool Send::A(char* a)
{
if(this->B(a))
return true;
return true;
}
int main()
{
Send send;
char k[5];
send.A(k);
cout<<k<<endl;
}
结果:
分析:定义了Send类其中有两个函数A和B,B的作用是将字符串"aaa"的地址拷贝到c地址中,A的作用是调用B函数。
当执行send.A(k)时,进入A函数,此时a为k,调用B函数B(a)=B(k),进入B函数,此时,c为k,strcpy(c,b)为strcpy(k,b),此时k为"aaa",A函数此时可以获取k的值。
4.有传入,有传出。
class Send{
public:
bool A(char*b,char* c);
bool B(char* c,char* d);
};
bool Send::B(char* c,char* d)
{
strcpy(c,d);
return true;
}
bool Send::A(char* a,char* c)
{
if(this->B(a,c))
return true;
return true;
}
int main()
{
Send send;
char k[5];
send.A(k,"AAA");
cout<<k<<endl;
return 0;
}
结果:
分析:以上为第三种情况的拓展,定义了Send类,其中有两个函数,A()和B(),B函数的作用是将地址d中的字符串拷贝到c地址中,A函数的作用是传入字符串的地址且传入B函数中。
可能有点难理解
分步为:
当我们send.A(k,“AAA”)时,首先进入函数A
此时函数A中的c就成了"AAA",然后调用B函数为B(k,“AAA”)
再进入B函数,此时,B函数中的c和d为 k和"AAA"
然后strcpy(c,d);就是strcpy(k,“AAA”),这时,k=“AAA”。
我们调用完后,可以获取k的值。