簡體   English   中英

如何在C中實現帶有兩個浮點數的結構?

[英]How do I implement a struct with two floats in C?

錯誤:必須使用“ struct”標簽來引用類型“ point”

我要做的就是將坐標存儲為結構。 這似乎非常簡單,但在訪問20個網站並瀏覽Kernaghan的書后,我卻做不到。

我想念什么?

#include <stdio.h>

int main() 
{
    struct point 
    {
        float x;
        float y;
    };

    point.x = 0.0;
    point.y = 1.9;

    return 0;
}

您使用該定義定義了一個名為struct point的類型,而不是變量名。 您想要使用該類型定義該結構的實例:

struct point mypoint;  // In C, you could change mypoint to point, but that gets confusing

或(較少)與一種類型的通過將名稱結構定義 ,分號之前(可能匿名)結構定義的聲明變量:

struct {
    float x;
    float y;
} point;

您只聲明了一個名為struct point類型 您尚未創建名為point對象進行操作。 您需要編寫一個單獨的對象定義,方法是:

struct point {
  float x;
  float y;
};

struct point pvar;

要么

struct point {
  float x;
  float y;
} pvar;

那么您可以操縱對象的成員:

pvar.x = 0.0;
pvar.y = 1.9;

等等

您的示例中的“點”是struct標記,而不是變量名。 您已經聲明了一個名為struct point類型 ,但是沒有聲明具有該類型的任何變量。 如果該聲明在范圍內,則可以使用以下形式聲明具有該類型的變量

struct point my_point;

然后分配給他們的成員

my_point.x = 0.0;
my_point.y = 1.9;

您需要具有一個結構對象,即實例化該結構。

struct point obj;
obj.x = 0.0;
obj.y = 1.9;

其他可用的選項是

struct point  // Note,structure is tagged 'point' which enables multiple instantiations
    {
        float x;
        float y;
    }obj; 

struct //  Anonymous structure with one & only one instance possible
    {
        float x;
        float y;
    }obj;

最后是typedef ,這也是一種常見的做法

typedef struct point 
{
  float x;
  float y;
}point;

point obj;
obj.x = 0.0;
obj.y = 1.9;

您所做的類似於說int = 3; 這是更喜歡它:

#include<stdio.h>

int main(void) {
    struct point {
        float x;
        float y;
    } s;

    s.x = 0.0;
    s.y = 1.9;

    return 0;
}

但是您應該看到編譯器警告,因為代碼將double值分配給float 除非您被迫使用,否則最好不要使用下float類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM