struct abc
{
char name[20];
int studno;
float tax;
} rec1, rec2;
我刚开始结构,老师教不好,我需要帮助澄清代码。如果我错了,请纠正我。
那么struct abc =结构的名字? 它包含3个字段,一个数组,学生号的整数和税的浮动类型 什么是rec1,rec2 for ??如果rec1,rec2都是* rec1,* rec2,那有什么区别??
非常感谢
答案 0 :(得分:2)
问题:
struct abc
吗?是的,是。struct abc
是否包含三个字段?是的,确实如此。结构元素是:name
(固定大小为20的字符数组),一个保存学生编号的整数:studno
和tax
- 这是一个浮点变量。< / LI>
什么是rec1
和rec2
? rec1
和rec2
只是struct abc
的变量实例。它是在定义结构的同时自动声明两个变量的简便方法。例如,要在之后使用相同的结构定义声明变量,您可以按如下方式执行:
struct abc mystruct = {};//initialize the struct variable mystruct
如果rec1
和rec2
同时为*rec1
和*rec2
- 有什么区别?在这种情况下,您已创建类型为struct abc
的两个指针变量。这意味着他们可以指向struct abc
的变量或实例,而rec1
和rec2
只是struct abc
的实例。
讨论:
对于第4点),实际上这意味着:
示例1
struct abc mystruct = {};
mystruct.name = "My Name";
但是,由于指针可以指向到内存,而rec1
和rec2
是struct abc类型的指针,这意味着您可以指向变量或实例struct abc
。一个常见的用法是:
示例2
struct abc mystruct = {};
mystruct.name = "My Name";
struct abc *abc_pointer = &mystruct;//abc_pointer is now _pointing_ to mystruct
访问结构元素,而不是像第1和第2个示例中常规结构中那样使用点/访问运算符,您必须使用指向成员的指针运营商:
示例3:
struct abc *abc_pointer = &mystruct;//abc_pointer is now _pointing_ to mystruct
abc_pointer->name = "Steve";//because you're pointing to mystruct, you can access and modify the values within. In this case, we're changing the name from "My Name" to "Steve"
另一种方法是:
(*abc_pointer).name = "Steve";
当然,除了我所描述的,你可以用这些知识和来做更多的事情。有关该主题的更多信息,请阅读以下内容: http://boredzo.org/pointers/
答案 1 :(得分:0)
rec1
和rec2
是您使用struct abc
类型创建的两个变量。
您可以轻松地将结构特征与变量创建分开:
struct abc {
char name[20];
int studno;
float tax;
};
struct abc rec1, rec2;
如果要将变量定义为:
struct abc *rec3;
然后rec3
将是一个指针类型,它意味着指向struct abc
类型的变量。