C-将未签名的短片存储在char*内



这是我的以下代码,在for循环中,我试图存储由malloc创建的char*内存中的无符号短int。我正在索引这样做,如果可能的话,我想保持这种方式。

但是,在打印尺寸(mymemory [0])时,甚至打印出地址mymemory [0]本身时,似乎正在存储P的整数值,而不是未签名的简短INT。整数本身是正确的,但是字节大小为1,而不是2个,因此不是一个未签名的简短

char* myMemory;
typedef unsigned short int R;
void main(){
R *p:
myMemory = malloc(65536)
for (int i = 0; i<36;i++){
    myMemory[i] = p;
    i++;
    myMemory[i] = p;
    p++;
    p++;
}
printf("testing size of an index %dn",sizeof(myMemory[2]));

}

我想您正在寻找

char* myMemory = malloc(sizeof(*p) * 36);
for (int i=0; i<36; ++i) {
    memcpy(myMemory+i, p, sizeof(*p));
    i += sizeof(*p);
    ++p;
}

但是您可以简单地使用

char* myMemory = malloc(sizeof(*p) * 36);
memcpy(myMemory, p, sizeof(*p) * 36);
p += 36;

请注意,增加指针会导致其向下移至下一个元素,因此++p通过sizeof(*p)字节提出了指针,而p += 36通过sizeof(*p) * 36字节进行了前进。

相关内容

  • 没有找到相关文章

最新更新