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();