Я столкнулся с проблемой с возвратом типа. Я использовал ниже статью для реализации вектора, и я хотел добавить еще одно поле в структуру.C язык возврата типа
http://www.happybearsoftware.com/implementing-a-dynamic-array.html
Я добавил его, как показано ниже:
typedef struct {
int size; // slots used so far
int capacity; // total available slots
int *data; // array of integers we're storing
char* dvalue ;
} Vector;
Вот definiation в заголовочном файле
char* vector_get(Vector *vector, int index);
Вот код в vector.c
char* vector_get(Vector *vector, int index) {
printf("Passed 1");
if (index >= vector->size || index < 0) {
printf("Index %d out of bounds for vector of size %d\n", index, vector->size);
exit(1);
}
// it shows red underline but there is no compilation error but only run time.
return vector->dvalue[index];
}
Я использую Visual Studio 2012.
Пожалуйста, помогите мне, где я ошибаюсь, почему я не могу получить данные, и это сбой.
Пожалуйста, помогите мне.
Благодаря
Вот дополнительная информация, как я установил значение. Я должен хранить значения int и string, а затем извлекать их тоже.
char* vector_get(Vector *vector, int index);
void vector_set(Vector *vector, int index, int value,char* dvalue);
void vector_set(Vector *vector, int index, int value, char* dvalue) {
// zero fill the vector up to the desired index
while (index >= vector->size) {
vector_append(vector, 0);
}
// set the value at the desired index
vector->data[index] = value;
vector->dvalue[index] = dvalue;
}
char* vector_get(Vector *vector, int index) {
printf("Passed 1");
if (index >= vector->size || index < 0) {
printf("Index %d out of bounds for vector of size %d\n", index, vector->size);
exit(1);
}
return vector->dvalue[index]; // it shows red underline but there is no compilation error but only run time.
}
'вектор-> dvalue' является' 'символ *, так что' вектор-> dvalue [индекс] 'является 'char', но ваша функция должна повторить n a 'char *', поэтому сообщение об ошибке. –
Мне нужно сохранить и вернуть строку, поэтому какой тип данных я должен использовать? Пожалуйста, порекомендуйте? – Bertrand
На самом деле информации недостаточно, чтобы сказать вам, что делать точно. Один из вариантов - «return vector-> dvalue;», но другим может быть изменение 'char * dvalue;' на 'char ** dvalue;'. Не зная, что должен представлять 'dvalue', и как он создается и модифицируется, невозможно сказать, что правильно. Название функции меня озадачило; вы сохраняете вектор 'int', но ваш' vector_get() 'возвращает' char * '- честно говоря, я не знаю, что это такое, что представляет собой' dvalue'. –