内存四区建立的流程
1、操作系统把物理硬盘代码load到内存
2、操作系统把c代码分成四个区
3、操作系统找到main函数入口执行
详细说明:
#include<stdio.h>
#include<stdlib.h>
char* getStr1()
{
char *p1 = "abc"; //字符串常量放在常量区
return p1;
}
char* getStr2()
{
char *p2 = "abcd";
return p2;
}
int main()
{
char *p1 = NULL;
char *p2 = NULL;
p1 = getStr1();
p2 = getStr2();
//打印p1,p2所指向内存空间的数据
printf("p1:%s,p2:%s\n",p1,p2);
//打印p1,p2的值
printf("p1:%d,p2:%d\n",p1,p2);
//总结:指针变量和它所指向的内存空间变量是两个不同的概念
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
char* getStr1()
{
char *p1 = "abc"; //字符串常量放在常量区
return p1;
}
char* getStr2()
{
char *p2 = "abc"; //字符串常量放在常量区 当放在全局区的常量相等的情况,编译器会优化保留一份
return p2;
}
int main()
{
char *p1 = NULL;
char *p2 = NULL;
p1 = getStr1();
p2 = getStr2();
//打印p1,p2所指向内存空间的数据
printf("p1:%s,p2:%s\n",p1,p2);
//打印p1,p2的值
printf("p1:%d,p2:%d\n",p1,p2);//p1 p2的值相等 都指向同一块内存空间
//总结:指针变量和它所指向的内存空间变量是两个不同的概念
system("pause");
return 0;
}