#include<iostream>
using namespace std;
int main(void)
{
unsigned char* uchar;
int dchar = 513 ;
*(int *)(uchar) = dchar;
return 0;
}
想实现一次赋值操作向 uchar 两个元素赋值
这个程序报运行时错误。
改成:
(int *)(uchar) = &dchar;
报编译时错误:
error C2106: '=' : left operand must be l-value
首先uchar没有分配空间,运行会出错.
改为
#include<iostream>
using namespace std;
int main(void)
{
unsigned char* uchar = new unsigned char[4];
int dchar = 513 ;
*(int *)(uchar) = dchar;
return 0;
}
应该是要在(int *)(uchar) = &dchar之前加*吧
*(int *)(uchar) = dchar;
你用(int*)转换uchar的时候 会返回一个转换到 int* 类型的值,之所以为值,不是存放值的变量,所以不能用在 左值,也就是等号左边,等号左边要变量。