我只是为一个角色分配一些内存,然后想做一些指针算法。 在这种情况下,我想将'\ x0a'写入字节32,如下所示:
#define HDR_SIZE 32
int size = 52;
unsigned char *readXPacket = (unsigned char *) malloc (size * sizeof (unsigned char));
*readXPacket + HDR_SIZE = '\x0a';
当我尝试这样做时,我收到以下错误消息:赋值中的非值。谁知道这里有什么问题?
由于
答案 0 :(得分:6)
将作业更改为:
*(readXPacket + HDR_SIZE) = '\x0a';
答案 1 :(得分:6)
显而易见的是:
readXPacket[HDR_SIZE] = '\x0a';
既短又清晰。当你使用C ++时,为什么不说:
unsigned char * readXPacket = new unsigned char[size];
或者更好的是:
std::vector <unsigned char> readXPacket( size );
并让C ++为您管理内存。
答案 2 :(得分:5)
...试
*( readXPacket + HDR_SIZE ) = '\x0a';