1. 程式人生 > >Head First C 讀書筆記(一)

Head First C 讀書筆記(一)

一段程式碼:

#include <stdio.h>


int main(){
char cards[] = "JQK";//editable, copy is in stack
// if char *cards is ineditable, in constant segment
char a_card = cards[2];
cards[2]=cards[1];
cards[1]=cards[0];
cards[0]=cards[2];
cards[2]=cards[1];
cards[1]=a_card;
puts(cards);

return 0;
}

在使用字串字面值直接給 char * 型別的變數賦值後,字串的內容是不可以修改的,這部分的內容在程式初始化時存放在了常量部分。為了提醒自己不可修改,可以加 const 修飾符,這是編譯器會報錯。

而直接宣告為 char 陣列型別的變數可以修改。在程式初始化時,字串會儲存在常量區,並且為了給陣列分配空間棧區會有另一份拷貝,這部分是可以修改的。