标签:去掉 img 空间 区别 rom from .com 报错 ima
int balance[5] = { 1000, 2, 3, 17, 50 };
int *ptr;
ptr = balance; //ptr是指向数组balance的指针
//或者这样也是可以的:
ptr = &balance[];
balance和ptr的区别是ptr是变量,balance是常量:
*ptr++ = 1; //这是可以的
ptr = balance++; //这是不可以的,IDE会报错说表达式必须是可修改的左值
根据菜鸟教程:http://www.runoob.com/cplusplus/cpp-return-pointer-from-functions.html
“C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量”
栗子本来用的随机数生成,觉得看的时候乱,直接改成1~10递增,长这样:
// 要生成和返回随机数的函数 int * getRandom( ) { static int r[10]; for (int i = 0; i < 10; ++i) { r[i] = i; cout << r[i] << endl; } return r; }
其实也好理解,如果不把变量定义成静态,函数里的变量就是局部变量了,调用函数的时候才会给局部变量分配内存空间,那函数返回以后分配的空间已经被操作系统回收了。
试了下,如果去掉静态修饰符static,输出结果乱码,但如果定义成全局变量也是可以的:
标签:去掉 img 空间 区别 rom from .com 报错 ima
原文地址:http://www.cnblogs.com/zhengmeisong/p/7771656.html