Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181756
  • 博文数量: 18
  • 博客积分: 334
  • 博客等级: 入伍新兵
  • 技术积分: 233
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 14:45
文章分类

全部博文(18)

文章存档

2015年(5)

2013年(7)

2012年(6)

我的朋友

分类: C/C++

2015-12-24 15:54:18

代码:
char * getstring1()
{
    char *p1 = "abcde";
    return p1;
}

char *getstring2()
{
    char *p2 = "abcde";
    return p2;
}

void main()
{
    int i = 0;
    char *p1 = getstring1();
    char *p2 = getstring2();
    strcmp(p1,p2);
    system("pause");
}


看到这个程序的时候,首先从main函数入手,
1、ini i = 0;入栈
2、p1入栈
3、调用getstring1()函数
4、char *p1 = "abcde"; abcde进入全局区。
内存四区图如下:


5、getstring1()函数运行结束,栈上的空间释放,把结果传给main()函数里的p1,
char *p1 = getstring1();
内存四区图如下:


6、char *p2 = getstring2();,p2在main()函数里,入栈,调用getstring2();,getstring2()入栈,内存四区图如下:



7、getstring2()函数运行结束,栈上的空间释放,把结果传给main()函数里的p2,内存四区图如下:

8、进行strcmp(p1,p2)的内存空间的值进行比较,p1和p2所指向的内存空间是一样的,所以值也是一样的。
9、代码执行完毕。
阅读(2090) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~