常量字符串的内存空间有系统自动分配
在常量区里面分配 当程序结束才会被释放
常量区 - 常量 const int a = 1;
静态区 static
栈 局部变量 int a = 10;离开作用域就自动收回
堆 自己申请的内存 malloc calloc realloc 必须自己释放
#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;
//若果使用指针变量接收数据
//必须先为这个指针变量分配一片指向的内存空间
//有内存空间 才能存数据
//导入头文件stdlib.h
//使用malloc(memory alloc)申请内存空间
name=(char*)malloc(10*sizeof(char));
if(name==NULL){
//申请内存失败
exit(EXIT_FAILURE);
}
scanf("%s",name);
printf("%s\n",name);
//使用realloc动态改变已经分配内存的大小
//增加或者减少
name=(char*)realloc(name,20*sizeof(char)) ;
if(name==NULL){
//申请内存失败
exit(EXIT_FAILURE);
}
//使用完毕必须自己手动释放内存
free(name);
return 0;
}
做一个demo
请输入姓名:jack
是否继续(y/n)?:y
请输入姓名:jackson
是否继续(y/n)?:n
录入两个人的信息:jack Jackson
![F}L4DQX5U6LR916`{{G0H8.png