第二节 · 以不变应万变 · 深入参数与返回值
void addOne(int n)
{
n = n + 1;
cout << "函数内 n = " << n << endl;
}
int main()
{
int x = 10;
addOne(x);
cout << "函数外 x = " << x << endl;
return 0;
}习题
Last updated
void addOne(int n)
{
n = n + 1;
cout << "函数内 n = " << n << endl;
}
int main()
{
int x = 10;
addOne(x);
cout << "函数外 x = " << x << endl;
return 0;
}Last updated
函数内 n = 11
函数外 x = 10void addOne(int& n) // 注意这里的 &
{
n = n + 1;
cout << "函数内 n = " << n << endl;
}
int main()
{
int x = 10;
addOne(x);
cout << "函数外 x = " << x << endl;
return 0;
}函数内 n = 11
函数外 x = 11void addOne(int* p) // 接收一个指针
{
*p = *p + 1;
cout << "函数内 *p = " << *p << endl;
}
int main()
{
int x = 10;
addOne(&x); // 传递 x 的地址
cout << "函数外 x = " << x << endl;
return 0;
}void printVector(const vector<int>& v) // 常量引用
{
for (int x : v)
{
cout << x << " ";
}
cout << endl;
}int add(int a, int b)
{
return a + b;
}
double average(double a, double b)
{
return (a + b) / 2.0;
}void sayHello()
{
cout << "Hello!" << endl;
// 不需要 return 语句,或者写 return; 即可
}int& getElement(int arr[], int index)
{
return arr[index];
}
int main()
{
int nums[5] = {1, 2, 3, 4, 5};
getElement(nums, 2) = 100; // 修改数组的第三个元素
cout << nums[2] << endl; // 输出 100
return 0;
}int& badFunction() // 错误示例!
{
int x = 10;
return x; // 危险!x 在函数结束后就不存在了
}void divide(int dividend, int divisor, int& quotient, int& remainder)
{
quotient = dividend / divisor;
remainder = dividend % divisor;
}
int main()
{
int q, r;
divide(17, 5, q, r);
cout << "商: " << q << ", 余数: " << r << endl; // 商: 3, 余数: 2
return 0;
}struct DivResult
{
int quotient;
int remainder;
};
DivResult divide(int dividend, int divisor)
{
DivResult result;
result.quotient = dividend / divisor;
result.remainder = dividend % divisor;
return result;
}
int main()
{
DivResult r = divide(17, 5);
cout << "商: " << r.quotient << ", 余数: " << r.remainder << endl;
return 0;
}#include <utility> // for pair
pair<int, int> divide(int dividend, int divisor)
{
return make_pair(dividend / divisor, dividend % divisor);
}
int main()
{
auto result = divide(17, 5);
cout << "商: " << result.first << ", 余数: " << result.second << endl;
return 0;
}void printArray(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int main()
{
int nums[] = {1, 2, 3, 4, 5};
printArray(nums, 5);
return 0;
}void func(int arr[]);
void func(int arr[10]); // 这里的 10 会被忽略
void func(int* arr);