考虑这段代码:
typedef struct fruits_s
{
char* key;
char value;
} fruits_t;
static fruits_t fruit_array[] = {
{ "Apple", 1 },
{ "Banana", 2 },
{ "Grape", 3 },
{ "Orange", 4 } };
static fruits_t* getFruitFromValue(char value)
{
int i;
for (i = 0; i < sizeof(fruit_array)/sizeof(fruit_array[0]); i++){
if (value == fruit_array[i].value){
return fruit_array[i];
}
}
}
我是 C 的新手,并且仍在学习何时需要/使用指针。我被 Java 背景宠坏了。所以,在上面的代码中,我感到困惑的是函数是否应该返回一个指针 fruits_t*
?或者是其他东西?当我这样做fruit_array[i]
是指向我的结构的指针,还是结构本身?
话虽如此,稍后在我的代码中,当我想使用该功能时,是这样的:
fruits_t* temp = getFruitFromValue(1);
或者
fruits_t temp = getFruitFromValue(1);
或者
fruits_t temp = &getFruitFromValue(1);