错误:必须使用“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;
}
答案 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
类型。