20170429C语言指针二
来源:互联网 发布:2016年java程序员工资 编辑:程序博客网 时间:2024/06/14 00:48
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int
*fun(
void
)
{
int
array[2] = {1,2};
return
array;
}
int
main(
int
argc,
char
*argv[])
{
int
*ptr = fun();
}
问题:
函数fun返回了一个指向数组的指针,主函数中ptr接受到改地址。
可是地址上的值是1和2吗?
我认为,随着函数的结束,值应该被销毁才对,可是实际运行,ptr[0] = 1,ptr[1]=2
原来不能返回局部变量的地址!局部变量地址,这个位置,随时会被其他代码覆盖例如,简单的调用 printf();这个函数,企图输出数值 1,2都也可能出不了。这样个函数,他的返回值,就是几乎无用的,数组里储存的数据,也是无法应用的。所以,这种返回局部变量地址的做法,是要不得的。
函数修改为
#include <stdio.h>
int *fun(void)
{
static int array[2] = {1,2};
return array;
}
int main(int argc, char *argv[])
{
int *ptr = fun();
}
0 0
- 20170429C语言指针二
- C语言(二)指针
- C语言------指针(二)
- C语言指针(二)
- 深入浅出 C语言指针 二
- C语言指针(二)
- c 语言指针练习<二>
- C语言指针学习 二
- C语言指针学习二
- C语言指针(二)
- C语言指针(二)指向指针的指针
- C语言指针详解(二)
- 杂论C语言指针笔记(二)
- Crack C语言之-指针之二
- C语言 指针连接字符串(二)
- c语言指针详解(二)
- 黑马程序员-----------C语言基础-----------指针(二)
- 黑马程序员--C语言之指针<二>
- Redis与Memcached的区别(一)
- 聊聊高并发(三十五)Java内存模型那些事(三)理解内存屏障
- 用jquery分页
- python_nba_tree
- 数组
- 20170429C语言指针二
- VS2017出现: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000D99016F6B0 处。
- 链表
- 【leetcode】插入排序一个链表
- Redis与Memcached的区别(二)
- JavaScript 脚本语言 重点整理
- HDU
- hdu[2034]
- 在配置XML文件时出现reference file contains errors (http://www.springframework.org/schema/beans/...解决方案