memcpy 和内存位置

memcpy and memory location

根据下面的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
  int i = 10;
  void *byte = calloc(1, 20);
  int j;
  memcpy((char*)byte, &i, sizeof(int));
  memcpy((char*)&j, byte, sizeof(int));
  printf("%d\n", (int)*byte);
  printf("%d\n", j);
  free(byte);
    return 0;
}

问题出在行

  printf("%d\n", (int)*byte);

如何打印字节的内容?

使用:

 printf("%d\n", *(int *)byte);

printf("%c\n", *(char *)byte);

例如i = 65,第一个选项会打印65,第二个选项会打印A.

int main(void){
  int i = 65;
  void *byte = calloc(1, 20);
  int j;
  memcpy((char*)byte, &i, sizeof(int));
  memcpy((char*)&j, byte, sizeof(int));
  printf("%d\n", *(int *)byte);
  printf("%c\n", *(char *)byte);
  printf("%d\n", j);
  free(byte);
  return 0;
}

结果将是:

65
A
65