码迷,mamicode.com
首页 > 编程语言 > 详细

c++学习笔记(二)-指针

时间:2017-11-02 14:25:48      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:去掉   img   空间   区别   rom   from   .com   报错   ima   

1. 指向数组的指针

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会报错说表达式必须是可修改的左值

 2. 指针作为函数返回值

根据菜鸟教程: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,输出结果乱码,但如果定义成全局变量也是可以的:

技术分享

 

c++学习笔记(二)-指针

标签:去掉   img   空间   区别   rom   from   .com   报错   ima   

原文地址:http://www.cnblogs.com/zhengmeisong/p/7771656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!