】int *p[3]定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针 对 错
时间: 2023-01-31 10:08:22 浏览: 58
错。
在 C/C++ 中,int *p[3] 定义了一个数组 p,该数组有三个元素,每个元素都是基类型为 int 的指针。
这个定义的含义是:创建一个名为 p 的数组,该数组有三个元素,每个元素都是指向 int 类型的指针。
可以这样使用这个数组:
```
int *p[3];
p[0] = new int;
p[1] = new int;
p[2] = new int;
*p[0] = 1;
*p[1] = 2;
*p[2] = 3;
cout << *p[0] << " " << *p[1] << " " << *p[2] << endl;
```
输出结果为:
```
1 2 3
```
如果要定义一个指针数组,可以这样写:
```
int **p;
p = new int*[3];
p[0] = new int;
p[1] = new int;
p[2] = new int;
*p[0] = 1;
*p[1] = 2;
*p[2] = 3;
cout << *p[0] << " " << *p[1] << " " << *p[2] << endl;
```
这样定义的含义是:创建一个名为 p 的指针,该指针指向一个数组,该数组有三个元素,每个元素都是指向 int 类型的指针。
相关问题
c++ 三个函数组成一个数组,每个函数都返回一个int型数组,然后定义一个指针指向整个数组
可以这样实现:
```c++
#include <iostream>
int*1() {
static int arr1[] = {1, 2, 3};
return arr1}
int* func2() {
static int arr2[] =4, 5, 6 return arr2;
}
* func3() {
static int arr3[] = {7,8, 9};
return arr3;
}
int (*arr[3])() = {func1, func2, func3}; // 定义函数指针数组
int main() {
int* p = arr[0](); // 指针指向整个数组
for (int i = 0; i < 9; ++i) {
std::cout << p[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
以上代码定义了三个函数,每个函数返回一个 `int` 数组,然后定义了一个函数指针数组 `arr`,其中存放了这三个函数的指针。在 `main` 函数中,我们使用 `arr[0]` 调用第一个函数并获取返回的指针,然后使用指针遍历整个数组并输出。
定义函数lookup(int *str,int *a,int n)查找数组str中的最小值,将数组中的每一个
元素与最小值比较,将比最小值小的元素的下标存入数组a中,返回比最小值小的元素的个数n。
以下是该函数的完整代码实现:
```c
int lookup(int *str, int *a, int n) {
int min_val = str[0]; // 假设第一个元素是最小值
int count = 0; // 记录比最小值小的元素个数
for (int i = 0; i < n; i++) {
if (str[i] < min_val) {
min_val = str[i]; // 更新最小值
count = 1; // 重置计数器
a[0] = i; // 存储第一个比最小值小的元素下标
} else if (str[i] == min_val) {
a[count] = i; // 存储下一个比最小值小的元素下标
count++; // 更新计数器
}
}
return count;
}
```
该函数接受三个参数:指向待查找数组的指针 `str`,指向存储比最小值小的元素下标的数组的指针 `a`,以及数组的长度 `n`。在函数中,我们首先假设第一个元素是最小值,然后遍历整个数组,逐个比较每个元素与当前最小值的大小,如果有元素比最小值小,就更新最小值,并将该元素的下标存入数组 `a` 中。如果有多个元素与最小值相等,我们也将它们的下标存入数组 `a` 中,并更新计数器 `count`。最后返回比最小值小的元素的个数。
注意,该函数的返回值 `count` 表示比最小值小的元素的个数,而不是下标的个数。如果数组中有多个元素与最小值相等,它们的下标都会存入数组 `a` 中,并计入到 `count` 中。
阅读全文