gpt4 book ai didi

c++ - 分配对指针数组的引用

转载 作者:行者123 更新时间:2023-12-01 15:10:46 25 4
gpt4 key购买 nike

我在理解C / C++语法时遇到以下问题。
假设我们有以下数据:

int a[3] = {1,3,5};
int b[3] = {2,4,6};
int* p[2];

我创建了一个包含两个指针的 p数组。

第一个问题:为什么以下分配不起作用:
p[0] = &a; p[1] = &b;

由于指针将地址作为其值。由于某种原因, p[0] = a; p[1] = b;可以工作。

第二个问题:,因为p [0]现在指向 a,为什么 *(*(p[0]))[0]不起作用?如何从某个索引处引用a的指针中获取值?

背景:我遇到了这些问题,因为我试图自然地将标量语法扩展为数组,以下语法将起作用:
  double a = 3;
double* p = &a;

* p给出值,而p给出地址。

最佳答案

First question: why does not the following assignment work:



p[0] = &a; p[1] = &b;

您使用指针数组中的单个 int*变量,您希望它指向什么?整个数组或特定元素的地址?当然,一个奇异值只能将 p[index]分配给单个变量,例如您的情况下的 a[index]。例如,这将起作用:

p[0] = &a[0];
// cout<<*p[0]; would yield a[0] or 1.

Second question: since p[0] now points to a, why does not *(*(p[0]))[0] work? How should I get the value from a pointer referencing a at some index?



您正在取消引用指针(应该已经使用 &进行了引用)。使用 p[0][index]在所需索引处引用 a

关于c++ - 分配对指针数组的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61031290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com