指针作为函数的参数

近期对指针有一点新的见解,不敢私藏, 希望和大家分享 

#include<iostream>
#include<string>


bool Meaning(std::string lov) {  //lov是形参
	if (lov == "我爱你") {
		return true;
	}
	else if (lov == "我不爱你") {
		return false;
	}
}

int main(void) {
	std::string love;
	
	std::cout << "男孩:我爱你,我愿意为你摘下天上的星星" << std::endl;

	std::cout << "女孩:";
	std::cin>> love;

	if (love != "我爱你" && love != "我不爱你") {
		std::cout << "请输入:(我爱你) 或 (我不爱你)!  不要模糊回答" << std::endl;
		return 1;
	}

	if (Meaning(love)) {   //调用函数Meaning(love);   string love是实参
		std::cout << "表白成功,男孩脱单" << std::endl;
	}
	else {
		std::cout << "表白失败,看来男孩是个舔狗!" << std::endl;
	}


	system("pause");
	return 0;
}

在c语言面向过程的程序中都是由一个或多个函数组成的,函数可以说是程序的组成单位之一

函数的传参都是单向的,实参向形参的单向传递

假如这个传递的参数是指针呢 . ``````````

1.函数无法通过形参修改实参  但是可以把形参定义成指针 ,就可以在函数体中修改实参

#include<iostream>

void alloca2(int n1) {
	n1 += 100;
}

int main(void) {
	int n = 10;

	alloca2(n);   
	std::cout << n << std::endl;

	system("pause");
	return 0;
}

以上程序中定义了一个n, 然后把n作为参数传递给了形参n1    在函数体中给n1加100 

但是实参不会因为在函数中改变了形参.而改变   但是用指针可以

#include<iostream>

void alloca2(int* n1) {
	*n1 += 100;
}

int main(void) {
	int n = 10;

	alloca2(&n);   
	std::cout << n << std::endl;

	system("pause");
	return 0;
}

2.函数需要更多的返回值

#include<iostream>

bool allot1(int n1) {
	if (n1 == 10) {
		return true;
	}
	else {
		return false;
		return n1;    //假如需要把n1一起返回就难以实现 
	}  

}

int main(void) {
	int n = 10;

	allot1(n);
	system("pause");
	return 0;
}

上一篇:18----JS基础-----自增练习


下一篇:v-model的常用用法