当前位置:首页 » 密码管理 » 结构体成员的访问

结构体成员的访问

发布时间: 2023-11-04 16:19:52

㈠ 如何访问结构体指针的结构体指针成员

1、该种方法用指针指向一个结构体,使用时p->成员名。

struct Studentp;

struct Student stu1={001,“zb”,90.5};

p=&stu1;

printf(“学号 姓名 分数 ”);

printf("%d %s %0.1f ",p->num,p->name,p->score);*/

2、该种方法是定义一个指针变量,只指向一个struct Student的结构体

struct Student* p;

struct Student stu={001,"zhao",90.5};

p=&stu;

printf("学号 姓名 分数 ");

printf("%d %s %0.1f ",(*p).num,(*p).name,(*p).score);*/

(1)结构体成员的访问扩展阅读

指向结构体变量的指针

除了通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。&student1 表示结构体变量 student1 的首地址,即 student1 第一个项的地址。如果定义一个指针变量 p 指向这个地址的话,p 就可以指向结构体变量 student1 中的任意一个成员。

用指针引用结构体变量成员的方式是:(*指针变量名).成员名

注意,*p 两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“*”,所以如果 *p 两边的括号省略的话,那么 *p.num 就等价于 *(p.num) 了。

从该程序也可以看出:因为指针变量 p 指向的是结构体变量 student1 第一个成员的地址,即字符数组 name 的首地址,所以 p 和 (*p).name 是等价的。

但是,“等价”仅仅是说它们表示的是同一个内存单元的地址,但它们的类型是不同的。指针变量 p 是 struct STUDENT* 型的,而 (*p).name 是 char* 型的。所以在 strcpy 中不能将 (*p).name 改成 p。用 %s 进行输入或输出时,输入参数或输出参数也只能写成 (*p).name 而不能写成 p。

c语言 对结构体类型的变量的成员的访问,无论成员是何种数据类型都可使用的运算符是()。

通常,访问一个结构体的变量的成员使用的运算符是点;比如一个结构体变量为sudent,它有一个成员为name,要访问结构体变量student中的成员name,直接可使用student.name来访问;
补充:当我们定义了一个指向结构体变量的指针时,可用运算符->去访问他的成员。

㈢ c语言 结构体访问成员(·)是什么意思,理解不到。

因为结构是一个集合,由若干成员构成,访问其成员就用下面这个形式:
结构变量名.成员名
举例如下:
struct person //定义结构类型
{
int weight,height;
float salary;
}
struct person zhangsan;//定义结构变量名
以下是访问结构成员:
zhangsan.height=176;
zhangsan.salary=6588;

㈣ C语言结构体指针成员所指向的变量如何访问

第一种写法:

(*a).p=&b;

.的优先级高于*,(*pointer)两边的括号不能少。如果去掉括号写作*pointer.memberName,那么就等效于*(pointer.memberName),这样意义就完全不对了。

第二种写法:

a->p=&b;

->是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针直接取得结构体成员;这也是->在C语言中的唯一用途。

结构体是一种数据类型,是一种创建变量的模板,编译器不会为它分配内存空间,就像 int、float、char 这些关键字本身不占用内存一样;结构体变量才包含实实在在的数据,才需要内存来存储。下面的写法是错误的,不可能去取一个结构体名的地址,也不能将它赋值给其他变量。

(4)结构体成员的访问扩展阅读:

用指针引用结构体变量成员方式总结与技巧:

一、(*指针变量饥兄名).成员名

注意,*p 两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“*”,所以如果 *p 两边的括号省略的话,那么 *p.num 就等价于 *(p.num) 了。

因为指针变量 p 指向的是结构体变量第一个成员的地址,即字符数组烂棚袭 name 的首地址,所以 p 和 (*p).name 是等价的。

“等价”仅仅是说它们表示的是同一个内存单元的地址,但它们的类型是不同的。指针变量 p 是 struct 型的,而 (*p).name 是 char* 型的。所以在 strcpy 中不能将 (*p).name 改成 p。用 %s 进行输入或输出时,输入参数或输出参数也只能写成 (*p).name 而不能写成 p。

二、直接用:指针变量名->成员名

来代替,它们是等价的。“->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高和启。p->num 的含义是:指针变量 p 所指向的结构体变量中的 num 成员。p->num 最终代表的就是 num 这个成员中的内容。

热点内容
c缓存池 发布:2025-01-20 13:23:45 浏览:6
数控编程帅气宝塔图纸 发布:2025-01-20 13:22:15 浏览:871
共享文件夹加密软件 发布:2025-01-20 13:08:41 浏览:40
标识符是怎样存储的 发布:2025-01-20 13:08:39 浏览:894
怎么看安卓大屏什么牌子 发布:2025-01-20 13:08:35 浏览:258
ios开发java 发布:2025-01-20 13:02:42 浏览:881
速腾有侧灯的是哪个配置 发布:2025-01-20 13:01:53 浏览:371
社保用户名和密码都忘记了怎么办 发布:2025-01-20 12:55:55 浏览:321
最优存储形式是什么 发布:2025-01-20 12:51:32 浏览:27
centos编译php7 发布:2025-01-20 12:33:52 浏览:920