Какая рабочая разница между подписанным символьным указателем и неподписанным? - PullRequest
5 голосов
/ 22 марта 2012

Я могу понять разницу между signed char и unsigned единицей. Но разве указатели соответствующего типа не эквивалентны в их работе? Cos sizeof(char) и sizeof(unsigned char) всегда одинаковы (или есть ли контрпримеры?)

Для указателей должен иметь значение только размер типа данных. Есть ли подводные камни, если я использую char * и unsigned char * взаимозаменяемо?

Я не считаю эти сообщения полезными: (

Разница между неподписанным символом и указателем символа

Почему вместо строки * вместо char * строка? Разница между char * и unsigned char *?

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

Вот пример счетчика, основанный на разнице в диапазонах типов, указанных каждым типом указателя:

#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;
}
3 голосов
/ 22 марта 2012

Тип указателей сообщает компилятору тип объекта, на который указывает указатель - таким образом, позволяя компилятору гарантировать, что вы используете этот указатель в правильном порядке и пытаясь гарантировать, что вы не делаете никаких ошибок .

Компилятор с его ошибками и предупреждениями старается изо всех сил убедиться, что код, который вы разрабатываете, является правильным. Обратите внимание на них - люди, которые пишут компиляторы, пытаются вам помочь.

...