近期对指针有一点新的见解,不敢私藏, 希望和大家分享
#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;
}