C++指针
指针作为形参
交换两个实际参数的值
#include <iostream>
#include<cassert>
using namespace std;int swap(int *x, int* y) {int a;a = *x;*x = *y;*y = a;return 0;
}
int main() {int a = 1;int b = 2;swap(&a, &b);cout << a << " " << b << endl;
}
数组作为函数参数
#include <iostream>
#include<cassert>
using namespace std;void f(int arr[]) {cout << sizeof(arr) << endl;
}
int main() {int array[5] = { 1,2,3,4,5 };cout << sizeof(array) << endl;f(array);return 0;
}
运行结果:
C++面向对象
<待更新>
C++11扩展
nullptr
如果有重载函数void f(int *x)和void f(int x)
那么,f(NULL)将会调用f(int x),这肯定不是程序员的原意。
C++11引入新的关键字nullptr, 充当单独的空指针常量。调用f(NULL)将会调用f(int* x)
auto
如果申请动态变量时给出初值,就可以使用auto推断所需分配的对象类型。例如:
#include <iostream>
#include<cassert>
using namespace std;int main() {auto p1 = new auto(10);cout << *p1 << endl;delete p1;return 0;
}
动态数组初始化
C++11允许为动态数组指定初值。
#include <iostream>
#include<cassert>
using namespace std;int main() {int* p = new int[5] {1, 2, 3, 4, 5};cout << p[0] << endl;delete p;return 0;
}