Search code examples
cpointerscharsizeofunsigned

Whats the working difference between a signed char pointer and an unsigned one?


I can understand the difference between a signed char and an unsigned one. But dont the pointers of the corresponding type equivalent in their operation? Cos sizeof(char) and sizeof(unsigned char) is always the same ( Or are there any counter examples? )

For pointers, only the size of the data type should matter. Are there any pitfalls if I use char * and unsigned char * interchangeably?

I din't find these posts as useful :(

Difference between unsigned char and char pointers

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


Solution

  • Here is a counter example based on the difference in ranges of types pointed by each pointer type:

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