2014-02-28 85 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";