memcpy和内存位置

memcpy和内存位置,c,memcpy,C,Memcpy,根据以下代码: #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)); print

根据以下代码:

#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);

例如,它
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
使用:

例如,它
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

也许您想要
*(int*)字节
?也许您想要
*(int*)字节
?“第二个选项将打印A”依赖于尾端。您能解释一下吗?我只知道字符串,它取决于endian。Thankssecond选项还假定主机使用ASCII或兼容字符set@rtx,我知道,我同意你说的。谢谢,“第二个选项将打印A”依赖于endian。你能解释一下吗?我只知道字符串,它取决于endian。Thankssecond选项还假定主机使用ASCII或兼容字符set@rtx,我知道,我同意你说的。谢谢