社区
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
谢谢~
...全文
377
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语言结构体
赋值
和有指针成员的结构体
赋值
1结构体
赋值
#include <windows.h> struct MyStruct { int a; int b; char c[20]; }; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int ..
定义结构体、声明
结构体指针
、然后给他
赋值
1、关于结构体定义 2、关于结构体声明 3、关于
结构体指针
的声明 4、
结构体指针
分配内存、释放内存 5、
结构体指针
内存
赋值
6、检查是否成功
赋值
#define _CRT_SECURE_NO_WARNING #include<iostream> #include<string.h> using namespace std; //定义一个结构体 struct Word {...
C++
结构体指针
与结构体数组的
赋值
知识点小结: 当需要批量
赋值
结构体的时候,可以使用结构体数组。对于
结构体指针
,可以用来指向结构体数组的首地址,但是不能按照结构体数组的
赋值
方式进行
赋值
,感觉是无法预知后面批量
赋值
的大小。具体情况见以下代码: #include <iostream> using namespace std; struct student { string name; int score; ...
结构体
赋值
和指针
赋值
结论:结构体的
赋值
,修改新结构体的内容不会改变原来的那个结构体的值,而指针的
赋值
,再对指针内容修改则会改变指针指向的那个对象的值,因为指针的
赋值
其实是将地址传给另一个指针。 定义结构体: struct person { int age; string name; }; 结构体
赋值
: person p1; p1.age = 12; p1.name = "Mike"; person p2 = p1; p2.name = "Mary"; cout << "p1:" << p1.age
空指针与
结构体指针
赋值
操作
1、测试代码: #include<stdio.h> #include<string.h> struct DATA { int year; int month; int day; }; struct TEST { int a; char b; }; int main(void) { struct DATA data1; void *p; data1.year ...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章