動態(tài)分配內(nèi)存

常量字符串的內(nèi)存空間有系統(tǒng)自動分配
在常量區(qū)里面分配 當(dāng)程序結(jié)束才會被釋放
常量區(qū) - 常量 const int a = 1;
靜態(tài)區(qū) static
棧 局部變量 int a = 10;離開作用域就自動收回
堆 自己申請的內(nèi)存 malloc calloc realloc 必須自己釋放


HQW}V~I$H5LSCAMEELO@IAD.jpg
SS(BRUN$K]{IN_0QD$07}J8.jpg
#include <stdio.h>
char* test(){
    char *name = "jack";
    return name;
} 

char *test1(){
    char name[10] = {'j','a','c','k'};
    return name;
} 
int main(){
    char *p ;
    p = test1();
    
    printf("-%s\n", p);
    return 0;
}

malloc realloc

#include<stdio.h>
#include<stdlib.h>
int main()
{
   //char name[100]={};
   char *name;
   //若果使用指針變量接收數(shù)據(jù)
   //必須先為這個指針變量分配一片指向的內(nèi)存空間
   //有內(nèi)存空間 才能存數(shù)據(jù)
   
   //導(dǎo)入頭文件stdlib.h 
   //使用malloc(memory alloc)申請內(nèi)存空間
   name=(char*)malloc(10*sizeof(char));  
   if(name==NULL){
    //申請內(nèi)存失敗
       exit(EXIT_FAILURE); 
   }
   scanf("%s",name);
   printf("%s\n",name);
   //使用realloc動態(tài)改變已經(jīng)分配內(nèi)存的大小 
   //增加或者減少 
   name=(char*)realloc(name,20*sizeof(char)) ;
   if(name==NULL){
    //申請內(nèi)存失敗
       exit(EXIT_FAILURE); 
   }
   //使用完畢必須自己手動釋放內(nèi)存 
   free(name);
   return 0;
}

做一個demo

請輸入姓名:jack
是否繼續(xù)(y/n)?:y
請輸入姓名:jackson
是否繼續(xù)(y/n)?:n
錄入兩個人的信息:jack Jackson

![F}L4DQX5U6LR916`{{G0H8.png

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

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

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