2014-02-28 51 views
1

我试图用字符指针变量改变字符指出:更改字符变量

 
    char *test3 = "mutable"; 
    printf("Expected: mutable, Result: %s\n", test3); 
    testt(test3); 
    printf("Expected tutable, Result: %s\n", test3); 

    void testt(char *s) { 
     *s = 't'; // FAILS, I get Segmentation Fault Error 
    } 

为什么上面的办法不行?字符指针指向变量是不可变的吗?如果是这样,我将如何修改指针变量的内容?

回答

3

这是因为您的char *指向字符串文字,字符串文字几乎位于只读存储中的每个现代操作系统。

尝试将其复制到堆栈中:

char test3[] = "mutable";