这条线具体是做什么的?
(char*) (&input)
我知道它将 int(input) 转换为 char 数组..还是我错了?你能指导我它是如何计算的吗?
更新:我想我现在明白了一点,然后我根据你的评论创建了 C++ 代码
#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
int input = 123456;
int *p = &input;
char *cp = (char*)p;
for(int counter = 0;counter <sizeof(input); counter++){
cout << *(cp+counter) << endl;
}
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但我认为我的代码是错误的。因为它只显示“@”,大“r”?,以及诸如十字符号之类的东西......
它不会“转换”任何东西。您只需指向整数的第一个字节。
如果你的int是 32 位(4 字节),并且你有一个指向它的指针......
int myInt = 123456;
int *ptr = &myInt;
Run Code Online (Sandbox Code Playgroud)
然后你将该指针转换为char指针......
char *cPtr = (char*)ptr;
Run Code Online (Sandbox Code Playgroud)
现在,您有一个指向整数的第一个字节的 char 指针。您可以通过以下方式单独查看每个字节:
int i;
for (i = 0; i < sizeof(int); i++)
{
printf("%d\n", *(cPtr+i));
}
Run Code Online (Sandbox Code Playgroud)
请注意,它char是带符号的,因此某些字节可能会换行为负数。相反,使用它unsigned char会改变这种行为。如果指针算术让您感到困惑,您可以替换*(cPtr+i)为cPtr[i]并获得相同的输出。
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |