C++第一篇博客,也是博客园首篇博客,写一下指针函数吧

研究C++没多长时间,就从现在开始记录C++工作路上的点点滴滴吧。今天写了一个小测试程序,主要用来理解一下指针函数的用法。

上code:

#include<iostream>
#include "stdlib.h"
#include "string.h"

using namespace std;

char *getStr(int num)
{
char *p = (char *)malloc(sizeof(char)*num);
strcpy(p, "hello");
return p;

}
int main()
{
int num = 100;
char *str = getStr(100);
cout<<str<<endl;

free(str);

return 0;
}

从上面的代码可以看出,函数getStr()需要返回一个char *类型的指针,函数体内首先定义了一个*p指针并给他赋值,作为函数的返回值。运行程序得到的结果就是“hello”。有人会出现这种疑问:不是说指针是在栈上的么,那函数getStr执行完返回后栈上的东西不就清空了么,为什么还能返回出来值?

是因为指针返回在前,清栈在后,指针返回后函数体外的变量会拿到指针所指向的地址,这样即使p被回收,也没关系。

另,大家从代码中可以看到,我们只是malloc了一块内存空间,并没有给予释放,而且,malloc出来的内存空间是在堆上,系统不会自动释放,这是非常危险的,所以,在函数执行完成后我们需要用free(str)来将malloc的内存释放掉。

好了,今天就写到这里吧,希望各位同僚多多指正,大家一起学习前进。我的QQ在页面上, 有问题探讨的可以随时联系楼主!

 

posted @ 2014-01-02 20:13  随WW便  阅读(145)  评论(0编辑  收藏  举报