20170429C语言指针二
2017-04-29 23:21
218 查看
函数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();
}
相关文章推荐
- 再谈C语言中数组和指针之间的互操作
- C语言 函数指针三(反向调用)
- C语言 结构体与结构体指针用法总结
- C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])
- C语言--函数指针
- 【C语言】-指针和字符串
- C语言02 - 指针运算、数组与指针、指针变量名、指针与函数参数、指针函数、函数指针、二级指针
- C语言 字符数组与字符指针比较
- C语言指针的赋值问题
- C语言中字符数组和指向字符数组的指针的区别
- 一道C语言的指针笔试题
- C语言之数组,字符串,指针
- 20161222C语言项目02_Reader指针错误使用实例
- C语言中指针的类型兼容性
- c语言中通过指针将数值赋值到制定内存地址
- c语言指针定义
- 黑马程序员---c语言 指针的学习笔记
- C语言指针
- C语言之指针的理解
- C语言中指针的高级用法