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

c结构体的访问

发布时间: 2022-05-24 10:59:41

⑴ 在c语言中怎样实现对结构体的访问具体点


struct A
{

};//A结构数据说明

A a;//A结构对象分配内存,并初始化;

假如 fun()函数要操作A结构怎么办?
status fun(A*& pa)
{
pa->数据 //操作A结构的数据
}
或者
status fun(A& pa)
{
pa.数据 //操作A结构的数据
}

⑵ C语言中struct 结构体 成员的访问问题

这主要得看a是什么类型,如果a是结构体变量(比如OS_MEM_DATA
a),那么就是a.b。
如果是结构体指针变量(如OS_MEM_DATA
*a),那么就是a->b。
a->b等价于(*a).b。

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

第一种写法:

(*a).p=&b;

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

第二种写法:

a->p=&b;

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

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

(3)c结构体的访问扩展阅读:

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

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

注意,*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语言中struct 结构体 成员的访问问题

这主要得看a是什么类型,如果a是结构体变量(比如OS_MEM_DATA a),那么就是a.b。
如果是结构体指针变量(如OS_MEM_DATA *a),那么就是a->b。
a->b等价于(*a).b。

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

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

⑹ c++类中结构体的访问

访问结构体元素,根据结构体变量的类型,有两种方法。
1
变量为结构体对象。
如果变量a为结构体对象,且结构体内有元素b,那么可以使用a.b的方式访问元素。
2
变量为结构体指针。
如果变量a为结构体指针,且结构体内有元素b,那么可以使用a->b的方式访问元素。
需要注意的是,结构体最初为c语言的概念,c++继承了该类型并进行了扩展。在c++中,结构体与类(class)是相似的,元素同样可以设置属性,如果被设置为private属性,那么结构体成员函数和友元函数外的其它函数无法访问该元素。

⑺ 关于C语言结构体访问的问题。

放在.h头文件中再#include是一个办法

另一个办法是使用extern关键字

首先要明白,编译器是分别编译源文件的,也就是分别编译test.c和main.c

test.c中使用到main.c中定义的变量的话,在main.c中加上

externsomeTypevar;//比如externinta;

加上这行代码编译器才知道你确实在别的地方定义了这么一个东西,在连接阶段linker会连接编译阶段分别生成的.obj文件,这时候就确实可以找到b这个变量了。


当然,对于你这个情况,用extern编译器虽然知道了有b这么一个变量,但是还是不知道有

struct{
inta;
}

这么一个结构体类型,那编译器当然不知道

b.a

表示的是什么意思。还是报错。所以还是用#include吧

热点内容
8加6算法 发布:2024-05-18 15:04:25 浏览:737
名图16款尊享什么配置 发布:2024-05-18 14:55:37 浏览:584
我的世界怎样刷出32k服务器 发布:2024-05-18 14:32:32 浏览:565
c语言程序设计江宝钏 发布:2024-05-18 14:32:22 浏览:780
右击文件夹总是转圈圈 发布:2024-05-18 14:31:10 浏览:696
新建数据库phpmyadmin 发布:2024-05-18 14:22:38 浏览:736
安卓手机设备连接在哪里 发布:2024-05-18 14:08:28 浏览:820
路由器的密码最多是多少位 发布:2024-05-18 13:58:18 浏览:420
扫描服务器名称如何填 发布:2024-05-18 13:36:29 浏览:115
芒果缓存的视频看不了视频怎么下载不了 发布:2024-05-18 13:35:14 浏览:520