このコードを考えてみましょう:
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);