(1)iOS 程序猿復(fù)習(xí) C/C++——從字符數(shù)組開始吧!

剛換了公司,接觸到新公司的項(xiàng)目智能家居類似物聯(lián)網(wǎng)的東西,這和之前一直熟悉的應(yīng)用層大大的不同,其中有大量的 C/C++ 代碼,這讓我寫了一年多的 iOS 程序猿直接懵逼。周末就抽時(shí)間來復(fù)習(xí)復(fù)習(xí) C/C++。

C 語言中的字符串

首先需要明確的是,C 語言里沒有字符串這種類型。是通過字符數(shù)組來模擬字符串的,所謂的 C 風(fēng)格字符串就是以 '\0' 結(jié)尾的字符串。

C字符串的定義

由于使用字符數(shù)組模擬,所有就有以的方法

char buff1[] = { '1', '2', '3' }; // 單個(gè)字符賦值,不會(huì)在末尾補(bǔ)零,打印的話,則會(huì)輸出:123燙燙廳齀
char buff2[] = "123"; // 使用雙引號(hào)的話,則會(huì)自動(dòng)在末尾補(bǔ)零,輸出:123 
char buff3[10] = { '3', '4', '5' };
char buff4[10] = "345"; //這兩種則會(huì)自動(dòng)監(jiān)測(cè)長(zhǎng)度加 '\0'

數(shù)組作函數(shù)參數(shù)

數(shù)組作參數(shù)會(huì)退化成指針,這樣就丟失了長(zhǎng)度信息,所以經(jīng)常就看到一個(gè)函數(shù)要求你傳指針和數(shù)組的長(zhǎng)度。

// 編譯器處理過程
func(char sourcr[10]) ----->func(char sourcr[])  ----->func(char *sourcr)

C語言的字符串存在什么區(qū)域?

內(nèi)存可以分為 stack(棧)、 heap(堆)、 global(全局常量區(qū))、 code(代碼段) ,在 C 中,stack、heap、global 都可以放字符串。
來看一個(gè)栗子:

//畫出以下各個(gè)變量的內(nèi)存示意圖
int main13()
{
    char buf[20]="aaaa";
    char buf2[] = "bbbb";
    char *p1 = "111111";
    char *p2 = malloc(100);
    strcpy(p2, "3333");
}
內(nèi)存四區(qū)圖.jpg

值得一提的是,開辟數(shù)組就會(huì)將 heap 的 "aaaa" 拷貝到字符數(shù)組中,指針并不會(huì)指向 heap 中的 "aaaa" ,如上圖所示。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為 gfson 原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。注:作者水平有限,文中如有不恰當(dāng)之處,請(qǐng)予以指正,萬分感謝...
    gfson閱讀 3,489評(píng)論 0 6
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,590評(píng)論 0 6
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,607評(píng)論 3 44
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,242評(píng)論 0 7
  • 偽裝的專制政體 屋大維比偉大的愷撒高明之處在于,他成功地給專制政體披上了共和政體形式的面紗。同愷撒一樣,他是執(zhí)政官...
    云丹風(fēng)卿閱讀 242評(píng)論 0 0

友情鏈接更多精彩內(nèi)容