结构体类型名、结构体变量名怎么区分

作者&投稿:沃弦 (若有异议请与网页底部的电邮联系)
结构体变量名是结构体的首地址吗?~

有些编译器 支持用结构体变量名做地址的方式
但一般不推荐
因为非标准

正确的方式是用&变量名
比如
struct type s;
那么s的地址为&s

结构体名字是类型名,变量名是实体名,一个类型可以有许多实体。
具体操作,举例讲解如下:
1.结构体类型定义
定义方式1:
Typedef struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
} *LinkList;

定义方式2:
struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
};
Typedef struct LNode *LinkList;
以上两个定义方式是等价的,是将*LinkList定义为struct LNode类型,即LinkList被定义为一个类型名。这样就可以用LinkList来定义说明新的变量了,如:
LinkList L;
即将L定义为struct LNode类型的指针变量

2.结构体类型变量定义
定义方式1:
struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
}LnodeA;
定义方式2:
struct LNode {
int data; // 数据域
struct LNode *next; // 指针域
};
struct LNode LnodeA;
以上两个定义方式也是等价的,这样就将LnodeA定义为一个truct LNode类型的变量,即LnodeA为一个truct LNode类型的变量名。

关键字 struct 就代表是一个结构体类型。

PER就是就是这个结构体类型的名称。

PER per ; per就是定义好的结构体变量。

12345678910111213141516171819202122typedef struct PER{    int n;    char ch[8];}PER;一般这样定义结构体类型 定义变量的时候可以 struct PER per; 或者 直接 PER per;  而用你写的定义方法只能用 PER per 定义变量  如果这样写struct PER{    int n;    char ch[8];}; 只能用 struct PER  per 的方式定义变量。

扩展资料:

#include<stdio.h>

struct pn544_dev{    //一般性定义结构体

 char a;

};   

typedef struct {        //定义一个数据类型

char a;

}pn545_dev;

int main()

{  struct pn544_dev *dev_id;

//struct pn544_dev *pn544_dev = dev_id;    //这个可以

struct pn544_dev pn544_dev;    //这个也是可以,可见不是数据类型的愿因

pn544_dev.a='a';

putchar(pn544_dev.a);

  pn545_dev pn545_dev;        //这个也可以,即使用typedef声明了数据类型,也可以同名。

pn545_dev.a= 'b'

putchar(pn545_dev.a);

return 0;}

参考资料来源:百度百科 ——结构体类型



结构体类型名有两种来历.一个是定义结构体的时候
struct type {...};
这里的struct type共同称为结构体类型名.
另一种是typedef出来的. typedef struct type TYPE; 这里的TYPE也是类型名.
二者可以写一起. typedef struct type {...} TYPE;
所以 在你的题目中, PER为typedef出来的类型名.
凡是用类型名定义的变量, 都是变量名.

还有:
假如有人问你“结构体类型”,其实就是结构体类型名。
定义变量时,结构体类型(名)+变量名,就像int a一样


结构体和_->的区别是什么?
1、指向不同 一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引用域 了。因为自动分配了结构体的内存。如同 int a;一样。而用“->”,则要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体...

结构体类型名 与结构体名可以重名?
变量\/对象名称是可以与类型名称重名的,但 C++ 关键字除外。例如:\/\/ 可以通过编译 CString CString;CString = "Hello, World!";\/\/ 错误 int int;int = 888;

c语言struct和typedef struct有什么区别?
C语言结构体中struct和typedef struct区别为:声明不同、访问不同、重新定义不同。一、声明不同 1、struct:struct可以直接使用结构体名字声明结构体。2、typedef struct:typedef struct的为。修饰结构体,结构体有了别名,通过结构体别名声明结构体。二、访问不同 1、struct:struct定义的结构体变量,...

C语言中结构体类型名与变量名区别是什么?
结构体名字是类型名,变量名是实体名,一个类型可以有许多实体。具体操作,举例讲解如下:1.结构体类型定义 定义方式1:Typedef struct LNode { int data; \/\/ 数据域 struct LNode *next; \/\/ 指针域 } *LinkList;定义方式2:struct LNode { int data; \/\/ 数据域 struct LNode ...

结构体类型的概述
在一个组合项中包含若干个类型不同(当然也可以相同)的数据项。C和C++允许用户自己指定这样一种数据类型,它称为结构体。它相当于其他高级语言中的记录(record)。例如,可以通过下面的声明来建立数据类型。 struct Student\/\/声明一个结构体类型Student{int num;\/\/包括一个整型变量numchar name[20];\/\/...

结构体类型与结构体变量
结构体的定义使用struct语句,格式为:struct [结构体名]{\/\/成员列表类型标识符 成员名;\/\/成员类型可以是基本型或构造型类型标识符 成员名;···};定义结构体类型时,需注意以下几点:系统不会为其分配内存空间,定义完成仅构造出一种类型;结构体类型支持嵌套,但在嵌套前完成被嵌套结构体类型的定...

C语言当中结构句后面一个星号,是什么意思?
格式:struct 结构体标识名 { 类型名1 结构成员表1;类型名2 结构成员表2;„„类型名n 结构成员表n;};注意:struct是关键字,是结构体类型的标志。“结构体标识名”和“结构体成员名”都是用户定义的标识符,“结构体标识名”是可选项,在说明中可以不出现。每个“结构成员表...

C语言中的结构体是什么意思啊?
C 语言中,结构体(struct)是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。定义与声明 结...

C语言结构体定义
C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的...

数据结构中 typedef struct 用法
结构体定义:第一种:只有结构体定义 struct stuff{ char job[20];int age;float height;};第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义 //直接带变量名Huqinwei struct stuff{ char job[20];int age;float height;}Huqinwei;也许初期看不习惯容易困惑,其实这就...

吉县19890534144: c语言中,结构体类型名和变量名之间有什么区别?如何区分? -
频封盐酸: Struct Stu( …)stu1; stu就是类型名,stu1就是变量名,函数里面可以用struct stu s这种形势继续定义像s这样变量,扯指针就有点小麻烦.记得不是很清了,大概是这样,另,不用给分了,好歹加了好友的

吉县19890534144: C语言中结构体类型名与变量名区别? -
频封盐酸: 结构体名字是类型名,变量名是实体名,一个类型可以有许多实体. 具体操作,举例讲解如下: 1.结构体类型定义 定义方式1: Typedef struct LNode {int data; // 数据域struct LNode *next; // 指针域 } *LinkList;定义方式2: struct LNode {int ...

吉县19890534144: 关于结构体类型、结构体类型名以及结构体变量的区分? -
频封盐酸: 关键字 struct 就代表是一个结构体类型. PER就是就是这e799bee5baa6e78988e69d8331333431356632个结构体类型的名称. PER per ; per就是定义好的结构体变量. 12345678910111213141516171819202122typedef struct PER{ int n; ...

吉县19890534144: C语言结构体类型跟结构体变量的区别 -
频封盐酸: struct表示一种结构 但是具体的结构类型需要你进行定义,所以struct A就是类型 用这个类型定义的struct A B;B就是变量了呗

吉县19890534144: C语言中结构体类型名与变量名区别? -
频封盐酸: 从内存使用的特点上来说结构体占用的内存等于各个结构体成员所占内存的总和,共用体类型等于其中占用最大内存那个成员所占用的内存,枚举类型事实上就是定义的特殊整数,而这个整...

吉县19890534144: C语言结构体名和结构体类型名有什么区别 -
频封盐酸: 结构体类型名可以将不同类型的变量放在一起,应用很广,具体应用可以拿本c语言的书看看. 结构体名就是结构体变量的名字,与变量名类似

吉县19890534144: 请问结构体类型名加变量名定义的是什么?补充:结构体大括号分号之后的变量代表的是结构体类型名吧? -
频封盐酸:[答案] 定义的是一个这个类型的对象 struct A{……}; A n;//类似于 int a; 只不过int类型很简单,而结构体类型要相对复杂,A是这个结构体的结构名 struct A{……}n,m;和 struct A{……}; A n;A m; 是一样的

吉县19890534144: 结构体struct和联合体union(联合)有什么区别呢? -
频封盐酸: 一、结构体struct 各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则.一个struct变量的总长度等于所有成员的长度之和.二、联合体union 各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的...

吉县19890534144: 什么是结构体变量? -
频封盐酸: 定义结构体类型,然后用这个类型定义出来的变量就是结构体变量 例如: typedef struct{int a; }num;int main{num b; } b 就是结构体的变量 num就是类似int的类型标识

吉县19890534144: C语言中结构体定义是分号前是变量还是类型 -
频封盐酸: 选项A中的a是不是指ord类型的结构体变量,是的,这里,是先定义一个结构体,再定义他的一个变量 a.C 选项,紧接着结构体( 在 } 后)可以直接定义变量.D 选项,无名结构体,C/C++是允许的.无名结构体只能紧接着结构体( 在 } 后)可以直接定义变量.由于是无名的,在这(结构体 } 后面的 ;)之后,就无法再定义这个结构体变量了.记住,C/C++ 的语句是以分号(西文)结束的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网