gpt4 book ai didi

c - 为什么指向指针的指针可以表现得像数组?

转载 作者:行者123 更新时间:2023-12-02 17:39:58 25 4
gpt4 key购买 nike

我正在我的一门课上学习 C。在我的一个实验室中,我们需要使用一组结构。

我的一位实验室助教告诉我应该像这样使用数组:

typedef struct person {

int age;
char *name;

} Person;

int main() {

Person **people = (Person **)malloc(sizeof(Person *));

Person *personA = (Person *)malloc(sizeof(Person));
personA->age = 18;
personA->name = "LeBron James";

Person *personB = (Person *)malloc(sizeof(Person));
personB->age = 20;
personB->name = "Kobe Bryant";

Person *personC = (Person *)malloc(sizeof(Person));
personC->age = 21;
personC->name = "Michael Jordan";

people[0] = personA;
people[1] = personB;
people[2] = personC;

printf("Name of first person is %s \n", people[0]->name);
printf("Name of second person is %s \n", people[1]->name);
printf("Name of second person is %s \n", people[2]->name);

结果是对的。但是我不明白为什么指向指针(people)的指针可以表现得像一个数组? (例如 people[0] = personA)

谁能给我解释一下吗?

最佳答案

之所以有效,是因为它基本上是语法糖。ANSI 标准对其进行了定义:

The definition of the subscript operator [] is that E1[E2] is identical to (*(E1+(E2)))

所以你可以使用解引用运算符 *a 来查看地址中的特定元素,或者使用 a[b] 运算符来查看 b a 的第一个元素。

正如其他人已经指出的那样,您的示例代码是完全错误的。

关于c - 为什么指向指针的指针可以表现得像数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21892211/

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