1. 程式人生 > 其它 >C++值傳遞傳入和傳出詳細講解

C++值傳遞傳入和傳出詳細講解

技術標籤:筆記字串c++值傳遞

我們知道,通常我們定義的函式很多都是帶引數的,用來傳入和傳出資料,下面,我將舉例來演示傳入傳出過程。

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的值。

看完本篇文章,大家是否對值的傳入和傳出有更深的認識呢。

在這裡插入圖片描述