了解以下行为

时间:2016-06-03 06:36:26

标签: c pointers bit-manipulation

我收到以下代码的段错误,有什么问题吗? 在这里,我试图改变a中的位。 另外,我知道char *是一个只读内存。

所以,我们必须复制到char a[]然后修改它???

    char *str = "abc";

    *str = *str << 1; 

2 个答案:

答案 0 :(得分:2)

char*字符串文字指向只读内存。您需要使用char数组:

char str[] = "Hello";
*str = *str << 1;

请参阅:What is the difference between char s[] and char *s?

答案 1 :(得分:0)

你准备做什么?

&LT;&LT;是一个按位运算符,* str不会引用整个字符串,而只引用第一个字符。

我还建议你在对其执行任何操作时在括号周围加上括号,以确保在地址上没有进行位移,而不是在该地址指向的位置。