社区
C语言
帖子详情
关于结构体指针的赋值
clleady
2009-09-08 08:42:23
struct sk
{in a;
int age;
}data,*p;
如果要使指针p指向data中的成员a,正确的赋值语句是p=(struct sk*)&data.a
为什么不是p=&data.a
谢谢~
...全文
366
11
打赏
收藏
关于结构体指针的赋值
struct sk {in a; int age; }data,*p; 如果要使指针p指向data中的成员a,正确的赋值语句是p=(struct sk*)&data.a 为什么不是p=&data.a 谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
生活简单到无聊
2009-09-09
打赏
举报
回复
o_0
atom_09
2009-09-09
打赏
举报
回复
类型问题
JK0803_lijixiang
2009-09-09
打赏
举报
回复
学习
gl007001
2009-09-09
打赏
举报
回复
学习
wissup
2009-09-09
打赏
举报
回复
首先,这样强转貌似可以,但是有可能会造成逻辑错误。
其次,如果指针虽然存储的都是地址,但是指针也是有类型的,不然编译器不知道是把多大区域当成一个独立的数据,这就是类型起的作用,一般指针都是指的首地址,然后加上类型,CPU才能正确的取得操作数,否则不是乱套了。
最后,如果LZ用到一些不严格的编译器,说不定两种写法都可以,因为p=&data.a 这样的,编译器会帮你强转的。
starcat
2009-09-08
打赏
举报
回复
虽然地址一样, 但是长度(类型)不一样。
p = &data;
p->a(或 data.a);
不就行了?有啥好转换的。
whg01
2009-09-08
打赏
举报
回复
&data.a 是得到一个int *指针,加上(struct sk*)是把指针类型转换成和p。
在内存中,data的地址和a的地址是一样的。
猫已经找不回了
2009-09-08
打赏
举报
回复
因为需要类型转换啊
fox000002
2009-09-08
打赏
举报
回复
这种无理的转换只会降低可读性
弄个 int * 类型指针不行吗
wanjingwei
2009-09-08
打赏
举报
回复
a是int型呀,肯定得转换
mstlq
2009-09-08
打赏
举报
回复
因为类型不一致……
必须强制转换……
C语言结构体
赋值
和有指针成员的结构体
赋值
本文探讨了C语言中结构体的
赋值
方式,包括直接
赋值
和含有指针成员的结构体
赋值
。对于含有指针成员的结构体,
赋值
会导致指针地址的复制,如果释放原始资源,可能会引发内存泄漏问题。
定义结构体、声明
结构体指针
、然后给他
赋值
本文详细介绍了C语言中结构体的定义、声明以及
结构体指针
的使用,包括如何分配和释放内存,如何通过指针对结构体进行
赋值
,并通过实例验证了
赋值
操作的成功性。
C++
结构体指针
与结构体数组的
赋值
本文介绍了在C++中如何使用结构体数组进行批量
赋值
,并探讨了
结构体指针
的应用及其限制条件。通过示例代码展示了正确的结构体数组初始化方式与使用
结构体指针
时应注意的问题。
结构体
赋值
和指针
赋值
本文探讨了C++中结构体
赋值
与指针
赋值
的不同。通过示例展示了结构体
赋值
创建的是副本,修改副本不会影响原结构体;而指针
赋值
实际上是拷贝指针地址,修改指针内容会改变原对象的值。
空指针与
结构体指针
赋值
操作
本文通过一个C语言实例,详细解析了结构体与指针的使用,包括空指针
赋值
、
结构体指针
直接
赋值
以及通过空指针中转
赋值
的情况。强调了不同类型的
结构体指针
赋值
时需谨慎对待获得的值。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章