美文网首页
C语言函数指针与指针运算

C语言函数指针与指针运算

作者: Dalvik_ | 来源:发表于2021-03-07 20:05 被阅读0次

1.多级指针

#include <stdio.h>
int main() {
    int i = 100;
    int *p = &i; //一级指针
    int **p_p = &p;//二级指针
    int ***p_p_p = &p_p;//三级指针

    printf("i的值:%d\n", i);
    printf("i的值:%d\n", *p);
    printf("i的值:%d\n", **p_p);
    printf("i的值:%d\n", ***p_p_p);
    return 0;
}

2.数组与数组指针

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};
    // arr表示首个元素的指针  arr[0]表示取出首个元素
    printf("arr第0个元素的值:%d\n", arr[0]);
    printf("arr第0个元素的值:%d\n", *arr);
    printf("arr第4个元素的值:%d\n", arr[4]);
    printf("arr第4个元素的值:%d\n", *(arr + 4));
}

3.采用指针遍历数组

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};
    for (int i = 0; i < sizeof arr / sizeof(int); ++i) {
        printf("arr的第%d的值为:%d\n", i, *(arr + i));
    }
    printf("%s\n", "-------------------------");
    for (int i = 0; i < sizeof arr / sizeof(int); ++i) {
        printf("arr的第%d的值为:%d\n", i, arr[i]);
    }
}

4.循环时给数组赋值

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6};
    for (int i = 0; i < sizeof arr / sizeof(int); ++i) {
      //  arr[i] = arr[i] + 100;
        *(arr + i) = *(arr + i) + 100;
    }
    printf("%s\n", "-------------------------");
    for (int i = 0; i < sizeof arr / sizeof(int); ++i) {
        printf("arr的第%d的值为:%d\n", i, arr[i]);
    }
}

5.数组指针操作的几种方式

int main() {
    int arr[] = {1, 9, 0, 9999};
    int *arrP = arr;
    for (int i = 0; i < 4; ++i) {
        printf("%d\n", arrP[i]);
      //printf("%d\n", *(arrP + i)); // + i 挪动元素3内存地址 再取元素3内存地址所对应的值
      //printf("%d\n", *arrP + i);  //*arrP取出数组的第一个元素
    }
    return 0;
}

6.指针类型有何用?

//指针类型的规定是为了:取值的时候,怎么取,这就是类型规定的好处
int main() {
    int *pInt;
    double *pDouble;
    char *pChar;
    printf("int指针的字节长度:%llu\n", sizeof pInt);//  4个字节(32)    4*2(64)
    printf("double指针的字节长度:%llu\n", sizeof pDouble);//  4个字节(32)    4*2(64)
    printf("char指针的字节长度:%llu\n", sizeof pChar);//  4个字节(32)    4*2(64)
    return 0;
}

7.函数指针

//声明函数指针
void(*method)(int, int);

//实现函数指针
void add(int a, int b) {
    printf("a+b=%d\n", a + b);
}
//实现函数指针
void reduce(int a, int b) {
    printf("a-b=%d\n", a - b);
}
//在函数参数中 声明函数指针
void operate(void(*method)(int, int), int a, int b) {
    method(a, b);
}
int main() {
    method=add;
    method(1,3);

    operate(add, 1, 2);
    operate(reduce, 4, 2);
}

相关文章

网友评论

      本文标题:C语言函数指针与指针运算

      本文链接:https://www.haomeiwen.com/subject/hzhrqltx.html