[英]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.