指针数组如何指向数组
时间: 2023-11-16 12:02:14 浏览: 37
指针数组是由指针构成的数组,每个指针指向一个数组元素的地址。要让指针数组指向数组,可以将指针数组的每个元素分别指向数组的每个元素的地址。例如,如果有一个int类型的数组a,可以定义一个指针数组p,然后将p的每个元素分别指向a的每个元素的地址,代码如下:
```
int a[] = {1, 2, 3, 4, 5};
int *p[5];
for(int i = 0; i < 5; i++){
p[i] = &a[i];
}
```
这样,p就指向了a的地址,p就指向了a的地址,以此类推。
相关问题
指针数组指向二维宿主
指针数组是一个数组,其中的元素都是指针。而二维数组是一个由多个一维数组组成的数组。如果我们想要让指针数组指向一个二维数组,我们可以将每个指针指向二维数组的每个一维数组。
下面是一个示例代码,展示如何让指针数组指向一个二维数组:
```c
#include <stdio.h>
int main() {
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int *ptr_arr[3];
for (int i = 0; i < 3; i++) {
ptr_arr[i] = arr[i];
}
// 访问二维数组的元素
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", *(ptr_arr[i] + j));
}
printf("\n");
}
return 0;
}
```
在这个例子中,我们定义了一个3x4的二维数组`arr`,然后定义了一个包含3个指针的指针数组`ptr_arr`。通过循环,我们将每个指针指向对应的一维数组。然后,我们通过解引用指针来访问和打印二维数组的元素。
输出结果为:
```
1 2 3 4
5 6 7 8
9 10 11 12
```
这样,我们就成功地让指针数组指向了一个二维数组。
定义指针数组指向对象
可以通过以下方式定义一个指向对象的指针数组:
```
#include <iostream>
class MyClass {
public:
void print() {
std::cout << "Hello, world!" << std::endl;
}
};
int main() {
MyClass obj1, obj2, obj3;
MyClass* arr[3] = {&obj1, &obj2, &obj3};
for (int i = 0; i < 3; i++) {
arr[i]->print();
}
return 0;
}
```
在这个例子中,我们定义了一个 `MyClass` 类,然后创建了三个 `MyClass` 对象 `obj1`、`obj2` 和 `obj3`。接着,我们定义了一个指针数组 `arr`,其中每个元素都指向 `MyClass` 对象的地址。最后,我们遍历数组,通过指针调用 `print()` 方法,输出 "Hello, world!"。