c - 如何使用指针遍历结构中的内存块?

标签 c pointers struct

目标: 遍历 Heap 结构中的 vertices 内存块。

错误:我在尝试访问vertices时得到expected unqualified-id before '(' token。另外,'vertices ' 未在此范围内声明

标题:

typedef struct Heap *PriorityQueue_t;
typedef struct HeapItem *PriorityItem_t;

PriorityQueue_t Init(int max_capacity, int source_vertex);

实现:

#include "heap.h"
#include <stdlib.h>
#include <limits.h>

struct Heap
{
  int size;
  PriorityItem_t vertices;
};

struct HeapItem
{
  int id;
  int distance;
};

PriorityQueue_t Init(int max_capacity, int source_vertex)
{
  PriorityQueue_t Q;

  Q = (PriorityQueue_t)malloc(sizeof(PriorityQueue_t));
  Q->vertices = (PriorityItem_t)malloc(sizeof(PriorityItem_t)*max_capacity);

  Q->size = max_capacity;

  int i;
  for(i = 0; i < Q->size; i++)
  {
    Q->(vertices + i)->id = i; //Errors on this line.
    Q->(vertices + i)->distance = INT_MAX;
  }
  Q->(vertices + source_vertex)->distance = 0;

  return Q;
}

最佳答案

您将括号放在了错误的位置。试试这个:

    (Q->vertices + i)->id = i; //Errors on this line.
    (Q->vertices + i)->distance = INT_MAX;
  }
  (Q->vertices + source_vertex)->distance = 0;

关于c - 如何使用指针遍历结构中的内存块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116105/

相关文章:

c - 确保施工安全

C#:使用泛型创建指针数组

c - 我是否必须从每个初始化的字符串中释放内存?

c - 从指针赋值给变量失败

c - 链表给出相同的结果 C

c - 为函数中的指针赋值时出现段错误

c - 如何限制分配内存的大小?

C 预处理器定义替换字符串格式说明符

c - 未定义类型的无效使用 ‘struct book_implementation’

c - 将两个结构体数组作为参数传递给函数