如何访问struct数组的第一个元素

时间:2013-11-22 08:36:18

标签: c arrays struct

所以我实现了以下方法。问题是,当我开始 搜索variableVector指针我注意到variableVector->变量 可能没有指向开始变量元素。

Variable* findVariable(VariableVector *variableVector,
        char *variableNameOfVariableToReturn) {
    if (variableVector->size < 1) {
        return NULL ; // since variableVector is empty
    }
    Variable *currentVariable = variableVector->variables;//<== HOW TO RESET TO BEGINNING???
    int numberOfVariablesInVariableVector = variableVector->size;

    for (int i = 0; i < numberOfVariablesInVariableVector; i++) {
        if (strcmp(currentVariable->variableName,
                variableNameOfVariableToReturn) == 0) {
            return currentVariable;
        } else {
            currentVariable++;
        }
    }
    return NULL ; // variable not found in variableVector
}

这些是我的结构:

struct _Variable {
    char *variableName;
    char *arrayOfElements;
    int32_t address;
};
typedef struct _Variable Variable;

struct _VariableVector {
    int size; // elements full in array
    int capacity; // total available elements
    Variable *variables;
};
typedef struct _VariableVector VariableVector;

这也是我添加新变量的方式:

bool appendVariable(VariableVector *variableVector, Variable *variable) {
    if (variableVector->size == variableVector->capacity) {
        return false;
    } else { // append since vector is not full
        int indexOfFirstEmptyElement = variableVector->size;
        memcpy(&variableVector->variables[indexOfFirstEmptyElement], variable, sizeof(Variable));
        //variableVector->variables[indexOfFirstEmptyElement] = *variable;
        variableVector->size++;
        return true;
    }
}

0 个答案:

没有答案