2016 3 21 關於字串的一點總結

2022-05-06 02:15:09 字數 1827 閱讀 1186

今天重點學習了一下關於字串的一些知識點,總結一下如下:

可以利用這個特性判斷字串是否到末尾了。假設有字元陣列str,下面的while()可以判斷字元陣列是否結束。

int i = 0;

while(str[i])

a).strcpy函式的原型
char *strcpy(char *strdest,const

char *strsrc);

具體實現如下:

#include//包含巨集

...char *strcpy(char* strdest,const char* strsrc)

其中

while((*strdest++=*strsrc++)!='\0')
不太好理解,可以理解為下面兩種方式:

//第一種

while(1)

//第二種

while ( *strsrc != '\0' )

*strdestcopy=『\0』;

b).void assert(int expression)函式

這個函式判斷expression的值是否為真,如果值為真,則跳過,接著執行下一條語句,如果其值為假,則向stderr列印一條出錯訊息,然後通過呼叫abort函式來終止程式。

c).char strcpy(char strdest,char* strsrc)的()裡面已經實現了對源字串到目標字串的複製,為什麼還要返回char*?

答:是為了實現鏈式表示式,返回具體值,就像下面這樣:

int length =strlen(strcpy(strdest,"hello world"));

d).在使用strcpy()函式時,必須預先為目標字串分配足夠的空間。

例:下面的程式會出現什麼問題?[美國某著名軟體公司面試題]

#include 

#include

int main(void)

實際執行結果如下:

可以看到源字串即便是宣告成const還是被截掉了一部分。原因在於目標字串空間不夠。先看一下s和d的位址是多少。

#include 

#include

int main(void)

執行結果:

可以看到s的位址是2686694,d的位址是2686690,因此有下圖:

因此,d=」123456789\0」, s =」56789\0789\0」。輸出是遇到\0即結束輸出。

malloc函式的原型為:void* malloc(unsigned int size);其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。引數是乙個無符號的整型數,返回值是乙個指向所分配的連續儲存域的起始位址的指標。如果函式沒有成功分配空間,則會返回乙個null並執行相應的操作。

free()函式與malloc()配套使用,原型為 void free(void* p)作用是釋放p所指的記憶體區域。

關於C語言字串指標的一點點總結

一直在看指標的資料,今天實踐了一次字串指標的操作,做乙個簡單的總結。如下,char x abcd 宣告乙個字元型別的指標x 指向乙個字串需要特別注意的地方為 1 指標型別為char 指標的型別決定了這個指標指向資料的型別 2 指標變數 x 自身是有變數位址的,也就是說 x 變數作為乙個變數,有自己的...

c new字串的一點心得

c 中,new的用法很靈活,這裡進行了簡單的總結 1.new 分配這種型別的乙個大小的記憶體空間,並以括號中的值來初始化這個變數 2.new 分配這種型別的n個大小的記憶體空間,並用預設建構函式來初始化這些變數 include include using namespace std int main...

字串常量 字元陣列 字元指標的一點小結

在程式中如果出現了字串形式,編譯器在處理的時候通常會在其末尾新增乙個 0 符號,作為字串的結束標識。通常,字串常量在程式中有兩種可能的身份 1 字元陣列的初始化列表 2 真正的字串常量。1 字元陣列的初始化列表 例如,有 char string hello 在這裡出現了字串 hello 編譯器在處理...