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

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. 指针作为函数返回值

根据菜鸟教程

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

 3. 类的指针

定义一个类:Solution,成员函数twoSum()

那么,调用这个类时可以有两种方法:

Solution mySolution;
mySolution.twoSum();

或:

Solution* mySolution;
mySolution = new Solution();
mySolution->twoSum();

类的this指针

 

posted @ 2017-11-02 12:30  tszs_song  阅读(249)  评论(0编辑  收藏  举报