c++ - 结构变量的解引用指针
问题描述
我试图了解当取消引用指向结构的指针时我们得到什么值。
我的结构是。
struct car
{
int a = 5;
int b = 10;
int c = 2;
int d = 14;
int e = 20;
};
我在 main 函数中的代码是
int main()
{
car k1,k2,k3,k4,k5; // declare struct variable
car* ptr1,*ptr2,*ptr3,*ptr4,*ptr5;// declare pointer to struct variable
ptr1 = &k1;
ptr2 = &k2;
ptr3 = &k3;
ptr4 = &k4;
ptr5 = &k5;
printf("*ptr1=%d *ptr2=%d *ptr3=%d *ptr4=%d *ptr5=%d \n", *ptr1,*ptr2,*ptr3,*ptr4,*ptr5);
};
当我将 ptr1 取消引用到 ptr5 时。我得到的值与结构中成员的值相对应(值 a 到 e)。为什么我得到这个值。
解决方案
为了能够打印 struct 你需要重载operator <<
. 然后,您的结构应如下所示:
struct car
{
int a = 5;
int b = 10;
int c = 2;
int d = 14;
int e = 20;
friend std::ostream& operator<<(std::ostream& os, const car& c) {
os << "Struct data:\n";
os << "------------\n";
os << "a var: " + std::to_string(c.a) + "\n";
os << "b var: " + std::to_string(c.b) + "\n";
os << "c var: " + std::to_string(c.b) + "\n";
os << "d var: " + std::to_string(c.b) + "\n";
os << "e var: " + std::to_string(c.b) + "\n";
return os;
}
};
然后,如果您要像这样打印取消引用的 ptr:
std::cout << *ptr1 << std::endl;
你会看到这样的输出:
Struct data:
------------
a var: 5
b var: 10
c var: 10
d var: 10
e var: 10
你可以返回你想要的,取决于你。
推荐阅读
- typescript - Using private properties with Module Augmentation in Typescript
- ios - 在 iOS (Flutter) 上调用 Agora RTC SDK 时如何获取麦克风输入流?
- docker - 从 pod 访问 CIFS 文件
- passport.js - 如何解决护照 saml 策略的问题
- express - 在 Nodejs 中使用 Multer 上传图像时出错
- ios - 录音点击开始
- git - 在 Visual Studio 2019 中添加 git 中的所有文件
- use-ref - useRef、useLayoutEffect、Element.scrollTo 每次都不工作
- elasticsearch - Kibana + Elasticsearch // 如何将 csv 导入 Kibana 中的现有索引(表)?
- constraints - 实现 Pyomo 的分段约束