C語言_內(nèi)存和字符串

@(C語言)

[toc]

內(nèi)存

c語言中內(nèi)存分三個區(qū):

  • 程序區(qū):存儲程序的二進制文件

  • 靜態(tài)存儲區(qū):全局變量和靜態(tài)變量

  • 動態(tài)存儲區(qū):

    • 堆區(qū):由程序動態(tài)分配
    • 棧區(qū):由編譯器動態(tài)分配,編譯器自動申請和釋放
  • (void )malloc*(int size):

    • 分配內(nèi)存的單元是字節(jié),
    • 分配大小是size。
    • 分配的內(nèi)存是連續(xù)的
  • void* calloc(count,size)

    • 申請count個大小為size的連續(xù)空間,這個連續(xù)空間的大小是size
    • 而不是Count*Size的空間,同時它會初始化0;
  • free

    • 動態(tài)申請的內(nèi)存用完后要釋放,且不能重復釋放
    • 釋放完要將它的指針賦值為NULL,否則將成為野指針
    • 申請和釋放要一一對應

字符串

C語言中沒有String
常量區(qū)的內(nèi)容不能被修改。

 char * str ="string";
    //系統(tǒng)先分配了一個常量區(qū)A,用來存儲"string"
    //char * str 沒有初始化
    //將常量區(qū)A的首地址指向str
    //當我們修改的時候失敗,是因為常量區(qū)不允許修改的
char * ch =(char *)malloc(100*sizeof(char));
    //將"china"內(nèi)容copy過來賦值到指定空間
    //如果  ch="china",則是將ch指向了常量地址
    strcpy(ch,"china");
    ch[2] ='b';
    printf("%s \n",ch)
  • strcpy 拷貝
  • strcat 添加
   char  fundaction [25];
    char *A=" a ";
    char *B=" b ";
    char *C =" c";
    
    strcpy(fundaction, A);
    strcat(fundaction,B);
    strcat(fundaction,C);
    
    printf("fundaction : %s \n",fundaction);

輸出:
fundaction : a b c

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

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

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