Что вызывает ошибку компилятора при выполнении побитового &? - PullRequest
0 голосов
/ 14 января 2011

У меня есть указатель на символ, указывающий на символ:

char *a = 'A';

И при этом поразрядно &:

*a & 0x11

Я получаю ошибку компиляции. В чем может быть причина этой ошибки?

Ответы [ 3 ]

5 голосов
/ 14 января 2011

a - это переменная, указывающая на символ в ячейке памяти 65. Операционные системы обычно не разрешают доступ к таким адресам и дают вам нарушение сегмента.

Если вы объявляете a не указателем, значит, он работает.

char a = 'A';
char b = a & 0x11;
printf ("%x %x\n", a, b);

Тем не менее, результат зависит от подписи char и используемого набора символов.

3 голосов
/ 14 января 2011

Вы неправильно сохраняете символ ('A', одинарные кавычки) в указателе на символ.Это можно исправить, сохранив указатель на строку ("A", двойные кавычки), хотя в этом случае вам также потребуется добавить const, поскольку эти строки являются константами.

 const char *a = "A";
 char v = (*a) & 0x11;
0 голосов
/ 14 января 2011

Это сделано так:

char i='A';
char *a = i;

или

char i='A';
char *a;
a=&i

Указатель может хранить только адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...