鍍金池/ 問答/C  Office/ c語言的常量是出現(xiàn)完就刪除么?

c語言的常量是出現(xiàn)完就刪除么?

#include<stdio.h>
int main()
{
    //char *a="123";這樣運行會死機 
    char a[]="123"; 
    a[1]='6';
    puts(a);
    return 0;
}



為什么a變量如果聲明成指針 運行起來會死機 聲明成數(shù)組就可以修改內(nèi)容了?

回答
編輯回答
情皺

char 類型是字節(jié)啊.你這是字符串.
換成這樣 char *a = '123';

2018年1月3日 16:53
編輯回答
淺淺

我理解的是:
用數(shù)組的話,表示分配了一塊4個字節(jié)長度內(nèi)存,位于棧區(qū),然后給這塊內(nèi)存初始化為“123”, 這塊內(nèi)存是可以修改的。
用指針的話,表示將這個指針指向一個字符串常量,而下面的語句a[1]=‘6’,試圖去修改一個常量,而字符串常量存放于全局靜態(tài)區(qū),是不可修改的,那就會報錯了。

2017年10月27日 20:14