int** fun (int n);
时间: 2023-11-19 12:05:08 浏览: 67
这是一个函数声明,函数名为 fun,返回值类型为 int**,参数列表中有一个 int 类型的参数 n。该函数的功能是动态生成一个 n * n 的二维数组,并返回该数组的指针。具体实现可以参考下面的代码:
```c++
int** fun(int n) {
int** arr = new int*[n];
for (int i = 0; i < n; i++) {
arr[i] = new int[n];
}
return arr;
}
```
其中,第一行动态生成一个指针数组,该数组有 n 个元素,每个元素都是指向一个 int 类型的一维数组的指针。接下来的 for 循环遍历指针数组,为每个指针分别动态生成一个长度为 n 的一维数组。最后返回指针数组的首地址。需要注意的是,在调用完该函数后,需要手动释放动态分配的内存,否则会导致内存泄漏。
相关问题
int fun ( int n, int *fp )
这段代码定义了一个函数 `fun`,该函数接受两个参数:整型变量 `n` 和整型指针 `fp`。函数返回一个整型值。下面是函数的具体实现:
```c
int fun(int n, int *fp) {
int result = 0;
if (n <= 0) {
result = 0;
} else if (n == 1) {
result = 1;
} else {
if (fp[n] != 0) {
result = fp[n];
} else {
result = fun(n-1, fp) + fun(n-2, fp);
fp[n] = result;
}
}
return result;
}
```
该函数的功能是计算斐波那契数列的第 `n` 项,使用了递归的方式进行计算。同时,为了提高计算效率,使用了一个整型数组 `fp` 来保存已经计算过的项的结果,避免重复计算。具体来说,如果 `fp[n]` 不等于 0,说明第 `n` 项已经被计算过,直接返回已经计算过的结果即可;否则,就使用递归的方式计算第 `n` 项,并将结果保存到 `fp[n]` 中。
void fun_b(int *x, int *y) {int *p; *x=*y;*y=*x; )
这是一个交换两个整型变量值的函数,函数名为fun_b,参数为两个指向整型变量的指针x和y。函数体内定义了一个指向整型变量的指针p,然后通过指针操作交换了x和y指向的变量的值。具体实现如下:
```c
void fun_b(int *x, int *y)
{
int *p;
p = x;
x = y;
y = p;
}
```
需要注意的是,函数内部的指针操作只是交换了指针本身的值,并没有交换指针所指向的变量的值。正确的实现方式应该是:
```c
void fun_b(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
```