指针函数
指针函数的定义
- 本质是一个函数
- 指针作为函数的返回值
用例
1 |
|
指针函数的坑
这个指针函数返回的指针指向的数据一定是字符串”123”吗?
如果让刚学完C语言的我回答,我可能会从语气中听出一些端倪,但是要我说个原因倒是不好描述。不过现在回过头来看,底层知识的清明就可以很快找到问题的关键了。
函数对应线程,线程拥有自己的栈空间(操作系统的逻辑内存),函数内的变量自然也是存储在栈空间中的。当函数完成他的使命之后,操作系统就会把栈空间释放掉,而栈空间中的变量自然也就被释放掉了。
这会带来什么呢?如果还记得指针的意义的话,就知道指针存的是地址,而不是数据,那么既然栈空间的数据都释放掉了,返回的指针指向的内存自然是没有意义的。或者说会获得一个“脏值”
ok,那么怎么解决这个问题呢?
难道要在外部调用这个函数的线程上就创建这个值吗?这明显不符合函数的要求和目的
其实很简单,static一下就能让操作系统为你的变量保留内存地址了。这也是static的“主要用途”。
1 |
|