C/C++ 指针

111 阅读1分钟

指针小栗子

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数组根据指针来获取值的时候,进行偏移量计算出下一块地址的位置。