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;
}