我是新来的结构,我正在尝试做一些教程,看看我是否很好地理解我一直在学习的东西这是我写的代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct variables{
    float Vx;
    float Vy;
    float Vz;
}velocity;

int main(){
    velocity *pv;
    pv = (velocity*)malloc(sizeof(velocity));

    pv[0].Vx = 1;
    pv[0].Vy = 2;
    pv[0].Vz = 3;

free(pv);

return 0;
}

所以我的问题是:
我是否以正确的方式分配了这三个变量?
既然我使用的是数组表示法,为什么我要写[0]
而不是[1][2]之类的?

最佳答案

你的代码是正确的,但是你使用的语法有点奇怪运算符[n]的意思是:取指针的地址(在您的例子中是pv中的值),将其增加n,然后取消引用。因为您不是递增地址(n=0),所以可以取消引用它您可以使用*pv或简单地使用pv->来执行此操作当您分配了多个结构并希望将地址设置为这些结构之一时,只需要[]运算符。pv[3]将与*(pv+3)相同但是,如果要将指针用作数组,首先必须分配更多的空间:
malloc(sizeof(velocity) * 4)

关于c - 初学者的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27512947/

10-13 08:10