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

访问结构体成员变量

发布时间: 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语言中的箭头运算符和点运算符有啥区别

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

热点内容
qq为什么密码修改好了就进不去 发布:2024-11-26 11:37:05 浏览:382
电容为啥耐压越大存储量越小 发布:2024-11-26 11:31:52 浏览:189
天然气车载储气瓶泄露处置脚本 发布:2024-11-26 11:17:36 浏览:254
换ip的服务器 发布:2024-11-26 11:17:29 浏览:75
容器平台怎么看配置 发布:2024-11-26 11:06:09 浏览:940
qq的xml源码 发布:2024-11-26 11:04:05 浏览:704
ip设计缓存设置 发布:2024-11-26 10:56:49 浏览:107
c语言k值 发布:2024-11-26 10:48:53 浏览:870
Java霸王大陆 发布:2024-11-26 10:44:52 浏览:704
乐高机器人怎么编程 发布:2024-11-26 10:36:12 浏览:374