如何在C中实现带有两个浮点数的结构?

时间:2016-08-29 21:29:42

标签: c struct

  

错误:必须使用“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;
}

5 个答案:

答案 0 :(得分:4)

您定义了一个名为struct point的类型,而不是使用该定义的变量名称。您想要使用该类型定义结构的实例:

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

或(不太常见)使用(可能是匿名的)结构定义的类型声明变量,方法是在结构定义之后将名称​​放在分号之前:

struct {
    float x;
    float y;
} point;

答案 1 :(得分:3)

您声明的所有内容都是名为//Create searchbar func createSearchBar(){ searchBar.showsCancelButton = true searchBar.tintColor = UIColor(red:0.184, green:0.996, blue:0.855, alpha:1.00) searchBar.placeholder = "Search brands" searchBar.delegate = self searchBar.hidden = false searchBar.alpha = 0 navigationItem.titleView = searchBar navigationItem.setLeftBarButtonItem(menuButton, animated: true) navigationItem.setRightBarButtonItem(searchButtton, animated: true) UIView.animateWithDuration(0.5, animations: { self.searchBar.alpha = 1 }, completion: { finished in self.searchBar.becomeFirstResponder() }) } 类型;您尚未创建名为struct point对象进行操作。您需要一个单独的对象定义,可以通过编写:

point

struct point {
  float x;
  float y;
};

struct point pvar;

然后你可以操纵对象的成员:

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

等。

答案 2 :(得分:2)

&#34;点&#34;在您的示例中是struct标记,而不是变量名称。您已声明名为struct point类型,但没有声明具有该类型的任何变量。如果该声明在范围内,您可以使用

形式声明具有该类型的变量
struct point my_point;

然后将其成员分配为

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

答案 3 :(得分:1)

你需要有一个结构对象,即实例化结构。

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;

答案 4 :(得分:1)

你所做的,类似于说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类型。