指针小栗子
int main() {
int i = 12;
int * ii = &i;
cout << i << endl;
cout << ii << endl;
cout << *ii << endl;
}
输出
0x7ffee9f1d96c12
数组与指针
数组遍历
int main() {
int arr[] = {2, 3, 4, 5};
for (int i = 0; i < 4; ++i) {
cout << arr[i] << endl;
}
cout << arr << endl;
cout << &arr[0] << endl;
cout << arr[0] << endl;
// 根据地址获取值
int * p = arr;
p +=2;
cout << *p << endl;
}
输出:
// 2
// 3
// 4
// 5
// 0x7ffee5072970
// 0x7ffee5072970
// 2
// 4
方法指针
// 定义回调函数
void call_back(int current, int total) {
printf("回调传回来的数值:%d/%d", current, total);
}
void compress(char *file_name, void(*callback)(int, int)) {
callback(12, 24);
}
int main() {
void (*call)(int, int);// 声明了一个函数
call = call_back;// 给函数指针赋值
// call(1,2);// 通过函数指针间接的调用call_back
compress("1.png", call);
}
指针为什么要有类型
指针其实就是一块地址而且他的值都差不多,进行偏移时,位置进行计算。比如int数组根据指针来获取值的时候,进行偏移量计算出下一块地址的位置。