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

访问结构体成员变量

发布时间: 2024-05-30 14:50:04

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

第一种写法:

(*a).p=&b;

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

第二种写法:

a->p=&b;

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

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

(1)访问结构体成员变量扩展阅读:

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

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

注意,*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语言中的箭头运算符和点运算符有啥区别

你好!
箭头是指针访问成员变量的
点运算符是用于结构体变量访问结构体成员变量的
也就是说:如果定义的结构变量是指针
那么要访问它的成员变量用箭头
如果定义的是结构体变量的话就是用点
希望对你有所帮助,望采纳。

热点内容
改进bp算法 发布:2024-09-08 11:22:23 浏览:977
酷狗怎么清除缓存 发布:2024-09-08 11:17:29 浏览:154
开发板主板交叉编译 发布:2024-09-08 11:12:59 浏览:167
手机学c语言软件 发布:2024-09-08 11:12:03 浏览:281
java培训课程有那些 发布:2024-09-08 11:11:30 浏览:651
旧笔记本如何装安卓系统 发布:2024-09-08 11:10:20 浏览:953
安卓怎么关闭蓝牙自动连接 发布:2024-09-08 10:58:12 浏览:11
tsm服务器修改ip地址 发布:2024-09-08 10:21:06 浏览:615
共享云源码 发布:2024-09-08 10:01:10 浏览:397
ios应用上传 发布:2024-09-08 09:39:41 浏览:441