在执行按位&?时导致编译器错误的原因

时间:2011-01-14 11:00:30

标签: c bit-manipulation

我有一个指向char的char指针:

char *a = 'A';

同时按位&

*a & 0x11

我收到了编译错误。造成这种错误的原因是什么?

3 个答案:

答案 0 :(得分:5)

a是一个指向内存位置65处的字符的变量。操作系统通常不允许访问此类地址并为您提供分段违规。

如果你声明a不是指针,那么它就可以了。

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

但结果取决于char和已使用字符集的签名。

答案 1 :(得分:3)

您错误地将字符('A',单引号)存储到指向char的指针中。您可以通过存储指向字符串("A",双引号)的指针来解决此问题,但在这种情况下,您还需要添加const,因为这些字符串是常量。

 const char *a = "A";
 char v = (*a) & 0x11;

答案 2 :(得分:-1)

它的完成方式是

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

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

指针只能存储地址。