指標與字串 基礎知識

2021-08-13 01:25:06 字數 2180 閱讀 2781

一、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 ...