#include<iostream>
using namespace std;
int main() {
struct Person
{
int m_id;
int m_age;
int m_height;
void display() {
cout << "m_id=" << m_id << endl;
cout << "m_age=" << m_age << endl;
cout << "m_height=" << m_height << endl;
};
};
Person person;
//person.m_id = 10;
//person.m_age = 20;
//person.m_height = 30;
//person.display();//观察结果
Person* p = &person;
p->m_id = 10;
p->m_age = 20;
p->m_height = 30;
p->display();//观察结果
//Person* p1 = (Person*)&person.m_age;
////p1->m_id = 10;
//p1->m_id = 40;
//p1->m_age = 50;
//p1->display();//观察结果
////person.display();、、观察结果
return 0;
}
#include<iostream>
using namespace std;
int main() {
struct Person
{
int m_id;
int m_age;
int m_height;
void display() {
cout << "m_id=" << m_id << endl;
cout << "m_age=" << m_age << endl;
cout << "m_height=" << m_height << endl;
};
};
Person person;
//person.m_id = 10;
//person.m_age = 20;
//person.m_height = 30;
//person.display();//观察结果
Person* p = &person;
p->m_id = 10;
p->m_age = 20;
p->m_height = 30;
p->display();//观察结果
//Person* p1 = (Person*)&person.m_age;
////p1->m_id = 10;
//p1->m_id = 40;
//p1->m_age = 50;
//p1->display();//观察结果
////person.display();、、观察结果
return 0;
}
转汇编可知为何结果不同

该代码示例展示了在C++中如何通过指针操作结构体成员变量,以及指针强制类型转换的潜在风险。程序定义了一个Person结构体,创建了一个实例并用指针赋值和访问其成员。尝试将指针指向结构体成员导致的错误操作揭示了对内存和类型的深入理解需求。
15万+

被折叠的 条评论
为什么被折叠?



