一、char型別的長度為1,而字串字面量的長度為4
printf("%d\n", sizeof(char));//1
printf("%d\n", sizeof('a'));//4
二、字串字面量看作常量,無法修改字串。
#includeint main()
上面程式執行報錯。為了自己好,不要去修改字串常量值,不然你是在給自己找麻煩。
三、字串初始化
1.初始化char陣列
char header="media player";
字面量「media player的長度為12個字元」,表示這個字面量需要13個位元組,我們就為陣列分配了13個位元組。初始化操作會把這些字元複製到陣列中,以nul結尾。
char header = "media player";
printf("%d\n", sizeof(header));//輸出13
也可以使用strcpy函式初始化陣列
char header[13];
strcpy(header, "media player");
下面的賦值是不合法的,我們不能把字串字面量的位址賦給陣列名字。
char header[13];
header = "media player";//表示式必須是可修改的左值
2.初始化char指標
最常用的方法是使用malloc和strcpy函式分配記憶體並將字面量複製到字串中:
在決定malloc函式要用到的字串長度時,要注意以下事項。
一定要記得算上終結符nul;
不要用sizeof操作符,而是用strlen函式來確定已有字串的長度,strlen不會算上『\0』;
sizeof操作符會返回陣列和指標的長度,而不是字串的長度。
char *header="media player」;
試圖用字元字面量來初始化char指標不會起作用。因為字元字面量是int型別,這其實是嘗試吧整數賦給字元指標。這樣會造成應用程式在解引指標時終止:
char *p = 'h';//char *與int的間接級別不同,雖然這一行不報錯,但是解引時會出錯。不合法。
printf("%c\n", *p);//報錯
給char*指標賦值,這樣都是可以的:
char *s;
s="123";
char *s="123";
s="456";
3.從標準輸入初始化字串
#includeint main()
從標準輸入讀入字串時可能犯得錯誤:
char *command;
printf("enter a command:\n");
scanf("%s", command);//沒有分配記憶體
4.字串位置小結
我們可能將字串分配在幾個地方,下面解釋了幾種可能的變化,下圖說明了這些字串在記憶體中的布局
python基礎知識 字串
1 字串的格式化 python 將若干值插入到帶有 標記的字串中,實現動態地輸出字串。格式 s str s s str 1,str 2 例如 str 0 i str 1 love str 2 china format s s s str 0,str 1,str 2 print format ilov...
python基礎知識之字串
凡是用引號 包括單引號 雙引號 三引號引起來的都是字串,其中單引號和雙引號沒有任何區別,可巢狀使用,多因好用於建立多行字串,並且可賦值給變數 a abcdefghijklmn print a 2 字串的索引從0開始,所以輸出cprint a 0 3 可以進行切片操作,就是通過索引 開始位置 結束位置...
基礎知識 字串python
len pbr out 3 len repr pbr out 5x iam y pan print x,y 法一,注意print 預設連續輸出兩個字串,其中間用空格隔開 x y 法二out iam pan 兩個字串之間有空格 iampana i am allen 這裡開頭有4個空格out i am ...