函数调用 实参初始化形参
时间: 2024-06-15 21:04:47 浏览: 116
函数调用是程序中一种常见的操作,它用于执行函数并传递参数。在函数调用过程中,实参(也称为实际参数)被传递给形参(也称为形式参数)。
函数调用的过程如下:
1. 首先,根据函数的定义,确定函数名和参数列表。
2. 在调用函数时,将实参传递给函数。实参可以是常量、变量、表达式或其他函数的返回值。
3. 在函数内部,形参接收实参的值。形参是函数定义中声明的变量,用于接收传递进来的实参值。
4. 函数体内部执行相应的操作,使用形参进行计算或处理。
5. 函数执行完毕后,返回结果(如果有)。
在函数调用过程中,实参的初始化是指将实参的值传递给形参的过程。实参可以通过值传递、引用传递或指针传递来初始化形参。
- 值传递:实参的值被复制到形参中,形参在函数内部使用时不会影响实参的值。
- 引用传递:通过使用引用作为形参,可以直接操作实参的值,对形参的修改会影响到实参。
- 指针传递:通过使用指针作为形参,可以通过指针间接地修改实参的值。
相关问题
用c++.定义一个circle类,用来计算并显示圆的周长和面积 为这个函数创建一个默认构造函数(半径为r出赋值为1)和带形参的构造函数(为类的成员变量通过实参进行初始化),并分别输出提示语“默认构造函数”“带形参的构造函数”。 为这个类创建析构函数,并输出提示语“析构函数”;。 类的声明和类的定义,请存放在不同的文件中,取名为circle.h和circle.cpp主函数中,创建两个对象,分别自动调用两个构造函数并在屏幕上显示周长和面积的相关信息。
以下是circle.h文件的代码:
```cpp
#ifndef CIRCLE_H
#define CIRCLE_H
class Circle {
public:
Circle(); // 默认构造函数
Circle(double r); // 带形参的构造函数
~Circle(); // 析构函数
double getArea(); // 计算圆的面积
double getPerimeter(); // 计算圆的周长
private:
double radius;
};
#endif
```
以下是circle.cpp文件的代码:
```cpp
#include "circle.h"
#include <iostream>
using namespace std;
Circle::Circle() {
radius = 1;
cout << "默认构造函数" << endl;
}
Circle::Circle(double r) {
radius = r;
cout << "带形参的构造函数" << endl;
}
Circle::~Circle() {
cout << "析构函数" << endl;
}
double Circle::getArea() {
return 3.14 * radius * radius;
}
double Circle::getPerimeter() {
return 2 * 3.14 * radius;
}
```
以下是主函数的代码:
```cpp
#include "circle.h"
#include <iostream>
using namespace std;
int main() {
Circle c1; // 自动调用默认构造函数
cout << "半径为" << c1.getPerimeter() << "的圆,周长为" << c1.getPerimeter() << ",面积为" << c1.getArea() << endl;
Circle c2(3); // 自动调用带形参的构造函数
cout << "半径为" << c2.getPerimeter() << "的圆,周长为" << c2.getPerimeter() << ",面积为" << c2.getArea() << endl;
return 0;
}
```
以上代码中,我们定义了Circle类,其中包括默认构造函数、带形参的构造函数和析构函数,以及计算圆的周长和面积的方法。在主函数中,我们创建了两个Circle对象,分别自动调用了两个不同的构造函数,并输出了相关信息。
写一函数,以指针作为实参和形参,在被调用函数里实现 3× 3 矩阵转置,并在主函数中输出转置后任一行任一列元素的值。 矩阵在声明部分赋值: 135 246 10 11 12
以下是实现该功能的代码:
```c
#include <stdio.h>
void transpose(int *matrix) {
int temp;
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
temp = *(matrix + i * 3 + j);
*(matrix + i * 3 + j) = *(matrix + j * 3 + i);
*(matrix + j * 3 + i) = temp;
}
}
}
int main() {
int matrix[3][3] = {{1, 3, 5}, {2, 4, 6}, {10, 11, 12}};
transpose(&matrix[0][0]);
printf("%d\n", matrix[1][2]); // 输出转置后的任意元素
return 0;
}
```
在主函数中,我们先声明一个 3x3 的矩阵,并初始化它。然后我们调用 `transpose` 函数,将矩阵进行转置。注意,我们将矩阵的首元素的地址传递给 `transpose` 函数,这样可以通过指针来访问矩阵的元素。
在 `transpose` 函数中,我们使用两个循环来遍历矩阵的上三角部分。对于每个需要交换的元素,我们使用一个临时变量 `temp` 来暂存其中一个元素的值,然后交换它们的值。这样就可以实现矩阵的转置。
最后,在主函数中我们输出转置后的任意一个元素,以验证矩阵转置的正确性。
阅读全文