Tips:
1、指针指向谁,就把谁的地址赋给指针。
2、指针变量和他所指向的内存空间变量是不同的概念。
3、函数中的局部变量在栈区,函数运行完就被析构掉了,对应的内存区域也就没有了。
4、C++编译器的优化:会对语法、句法进行分析,对同一个内容会分配同一块内存区域(即内存编号相同),不同内容则存储在不同的内存单元中。
地址:0xaa11 0xaa16
内容:“abcdefg2” “abcdefg22”
5、函数中的局部变量被析构了,但是可以通过函数返回值传给了主函数中的局部变量。
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
char * getStr1()
{
char *p1="abcdefg2";
return p1;
}//函数执行完,p1就被析构了,应为p1存储在栈区
char *getStr2()
{
char *p2="abcdefg2";
return p2;
}
void 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");
}