我在看一些c ++代码,我看到了这个:
int num = *(int *)number;
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个?它是在一个标记为这样的函数中:
void *customer(void *number){ }
Run Code Online (Sandbox Code Playgroud)
这甚至做了什么?是否有不同的方式来展示这个?
谢谢,这不是家庭作业btw我只是困惑这是什么?
Ste*_*sop 12
该函数需要一个void*,但不知何故它知道(可能在某些文档中需要它),它给出的指针实际上指向一个int.
所以,(int*)number是"原始指针,转换为一个int*以便我可以从中读取int它",并且*(int*)number是它指向的int值.
正确答案已经在这里,但我能告诉你一个在我不得不大量使用 C 时通常对我有帮助的技巧吗?
这就是你在头脑中发音“*”的方式——有两个部分。
常见的部分是当它是类型的一部分时——每个人在阅读时可能都会说“指针”,这很好。所以 (int *) 是一个 int 指针——或者我什至会在我的脑海中反转它来阅读“指向 int 的指针”,这似乎有点帮助。
对我有很大帮助的事情是每当您在代码中看到 * 时——将其读作“指向的内容”。
如果你遵循这个模式,那么:
int num = *(int *)number;
Run Code Online (Sandbox Code Playgroud)
是一个整数变量“num”被分配了值:int 指针所指向的值,number。它只是自己翻译。
有时你不得不稍微弄乱措辞,但自从我养成这个习惯后,我在阅读指针代码时从来没有遇到过大问题。
我相信我在 C 中也将 & 读为“的地址”,但如果我没记错的话,我认为它在 C++ 中被重载了。
| 归档时间: |
|
| 查看次数: |
18321 次 |
| 最近记录: |