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");
}