什么是签名的char指针和未签名的char指针之间的工作差异?

时间:2012-03-22 15:50:39

标签: c pointers char sizeof unsigned

我可以理解signed charunsigned之间的区别。但是,相应类型的指针在其操作中是否相同? Cos sizeof(char)sizeof(unsigned char)始终相同(或者是否有反例?)

对于指针,只有数据类型的大小才重要。如果我可以互换地使用char *unsigned char *,是否有任何陷阱?

我发现这些帖子并不有用:(

Difference between unsigned char and char pointers

Why short* instead of char* for string? Difference between char* and unsigned char*?

2 个答案:

答案 0 :(得分:4)

这是一个基于每个指针类型指向的类型范围差异的计数器示例:

#include <stdio.h>
int main() {
  unsigned char *uc;
  char *c;
  unsigned char v = 128;
  uc = &v;
  c  = &v;
  if (*uc != *c)
    printf("there is difference\n");
  return 0;
}

答案 1 :(得分:3)

指针的类型告诉编译器指针指向的东西的类型 - 从而使编译器能够确保您以正确的方式使用该指针并尝试确保您没有发生任何错误

编译器及其错误和警告正在尽力确保您开发的代码是正确的。注意它们 - 编写编译器的人正试图帮助你。