c語言 字符串數組與指針字符串的區別

#include "stdio.h"

int main(void)
{
    char *str = "hello world\r\n";  //指針類型初始化字符串,只讀,
                                    //"hello world\r\n"存儲在常量區
    char buf[] = "hello world\r\n"; //數組類型初始化字符串,讀寫
                                    //"hello world\r\n"存儲在全局區或棧區
    
    printf("buf=%s\r",buf);//輸出原字符串
    buf[0] = 't'; //正確,數組內容可以修改
    printf("buf=%s\r\n",buf);//輸出修改後的字符串

    printf("str=%s\r",str);//輸出原字符串
    str = "Test"; //正確,指針指向新的字符串
    printf("str=%s",str);//輸出修改後的字符串

    *(str+0) = 't'; //錯誤,指針指向內容不可修改
    printf("(str+0)=%s",str);//因爲上一句錯誤,此處無法執行

    return 0;
}

 輸出如圖:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章