2013-02-28 3 views
-2

Хорошо, я просто полностью застрял на своей домашней работе, и мой мозг сейчас не работает. Я все еще не так хорош программисту, поэтому мне нужна помощь в том, чтобы узнать, что происходит в коде, как я могу их исправить.Возвращаемые значения в C

У меня возникли проблемы с пониманием с помощью указателей.

Я не уверен, что я делаю это правильно, пытаясь вернуть значения. Будет еще одна программа, которую я должен использовать для фактического использования этих функций, но мне была дана эта работа для работы в первую очередь.

Для функции добавления я пытаюсь сделать пункт пункта для каждого параметра, чтобы получить данные.

Для функции AddItem, я пытаюсь получить новый пункт пункта к элементу из функции добавления и получить эти данные.

Содержит функцию (все еще работает): Мне нужно принять параметр из функции AddItem. Возвращает true, если элемент существует, false, если нет.

Функция получения (все еще работает): тот же параметр, что и функция Contain. Вернуть указатель найденного элемента или NULL, если элемент не найден.

Data.h

#ifndef DATA_H_ 
    #define DATA_H_ 

    /* 
    * Database Struct 
    */ 
    typedef struct 
    { 
     /*char *array[10];*/ 
     Iteminfo *itemdata; 
     int counter; 
    }databaseinfo; 

    /* 
    * Item Struct 
    */ 
    typedef struct 
    { 
    int IDnum; 
     double price; 
    char * Name; 
    }Iteminfo; 

    /* 
    * Prototypes 
     */ 
     char DatabaseManage(); 
     int Add(); 
     char AddItem(); 
     int Contains(); 
     int Get(); 

     #endif /* DATA_H_ */ 

DatabaseManage.c

#include <stdio.h> 
#include "Data.h" 

    /* 
    * Constructor Function 
    * @Parameters databaseinfo, count 
    * Creates and returns the database 
    */ 
    databaseinfo constructor(Iteminfo *itemdata, int counter) 
    { 
     databaseinfo *newdb = malloc(sizeof(databaseinfo)); 
     return constructor; 

    } 
    /* 
    * Add Function 
    * @Parameters Iteminfo, IDnum, price, Name 
    * Adds an item to the database 
    */ 
     int Add(Iteminfo *item, int IDnum, double price, char * Name) 
     { 
     item->IDnum = IDnum; 
     item->price = price; 
     item->Name = Name; 

     return item; 
    } 

    /* 
    * AddItem Function 
    * @Parameters Iteminfo 
    * Copies item to database 
    */ 
    char AddItem(Iteminfo *item, char * newItem) 
    { 
    newitem->item = item; 
     return copyitem; 

    } 

    /* 
    * Contains Function 
    * @Parameter 
    * Returns if the item exists or not in the database 
    */ 
    int Contains(void) 
    { 

    } 

    /* 
    * Get Function 
    * @Parameters 
    * Returns the pointer of the item from the database 
    */ 
    int get(void) 
    { 

    } 
+3

В чем вопрос? –

+1

@ KarthikT хочет, чтобы мы выполняли свои функции –

+0

Я думаю, что это больше связано с синтаксисом, если я делаю все правильно. Если я правильно использую указатели, чтобы вернуть значения, я сейчас в беспорядке, пытаясь понять, что делать здесь. – user2031589

ответ

1

Первая всего:

databaseinfo constructor(Iteminfo *itemdata, int counter) 
{ 
    databaseinfo *newdb = malloc(sizeof(databaseinfo)); 
    return constructor; 
} 

Когда вы пишете возврат в функции должен возвращать значение, если это не void функция.

Так оно и должно быть:

databaseinfo* constructor(Iteminfo *itemdata, int counter) 
{ 
    databaseinfo *newdb = (databaseinfo*)malloc(sizeof(databaseinfo)); 
    // your code here for data initialization 
    return newdb; 
} 

В этом случае функция вернет вам указатель на выделенную память.

Ans и дальше.

Смежные вопросы