我有一个指向char的char指针:
char *a = 'A';
同时按位&
:
*a & 0x11
我收到了编译错误。造成这种错误的原因是什么?
答案 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
指针只能存储地址。