美文网首页
指针与数组和函数的几个关系

指针与数组和函数的几个关系

作者: 第八区 | 来源:发表于2017-07-03 16:21 被阅读25次

指针数组、数组指针

  • 指针数组。数组的元素类型是指针

    如:int* a[4]

  • 数组指针。指向数组的指针变量

    如:int (*a)[4];

int main() {
    int a[4] = {1, 2, 3, 4};
    //指针数组
    int *b[4];
    //数组指针
    int (*c)[4];
    c = &a;
    for (int i = 0; i < 4; i++) {
        b[i] = &a[i];
    }
    printf("%d,%d", *b[1], c[0][1]);
}

定义了数组指针,该指针指向这个数组的首地址,必须给指针指定一个地址,容易犯的错得就是,不给b地址,直接用(b)[i]=c[i]给数组b中元素赋值,这时数组指针不知道指向哪里,调试时可能没错,但运行时肯定出现问题,使用指针时要注意这个问题。但为什么a就不用给他地址呢,a的元素是指针,实际上for循环内已经给数组a中元素指定地址了。但若在for循环内写a[i]=c[i],这同样会出问题。

指针函数、函数指针

  • 指针函数 一个返回值为指针的函数,本质是一个函数。

    //指针函数
    char *reverse(char *);
    
    int main() {
        char s[100] = "abc";
        char *res = reverse(s);
        if (res != NULL)
            printf("%s", res);
    }
    
    //字符串逆转,指针函数
    char *reverse(char *p) {
        if (p == NULL) {
            return NULL;
        }
        int count = 0;
        char *k = p;
        while (*k++) {
            count++;
        }
        char *start = p;
        char *end = p + count - 1;
        for (int i = 0; i < count / 2; i++) {
            char temp = *start;
            *start = *end;
            *end = temp;
            start++;
            end--;
        }
        return p;
    }
    
  • 函数指针 指向函数的指针变量,本质是一个指针。

    将上面的代码进行一些修改,使用函数指针来执行。

    int main() {
        char s[100] = "abc";
    //    char *res = reverse(s);
    //    if (res != NULL)
    //        printf("%s", res);
    //     声明函数指针
        char *(*funcPointer)(char *);
        funcPointer = reverse;
        char *res = funcPointer(s);
        if (res != NULL)
            printf("%s", res);
    }
    

相关文章

  • 指针与数组和函数的几个关系

    指针数组、数组指针 指针数组。数组的元素类型是指针如:int* a[4] 数组指针。指向数组的指针变量如:int ...

  • 数组指针/指针数组/函数指针/函数指针数组

    原文地址: 浅谈 数组指针 指针数组 函数指针 函数指针数组... 以及它们之间区别。 首先,先说明一个关系:数组...

  • C语言特性(指针数组和指向指针变量的指针)

    指针数组和指向指针变量的指针 指针数组与main()函数形参 声明指针数组与声明普通数组的语法类似,其语法格式如下...

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • ndk02_指针运算,函数参数与指针,数组指针,二级指针

    一、指针运算 二、数组与指针 三、指针和函数参数 四、指针数组 五、 二级指针 六、知识要点 1、C语言中的函数如...

  • 指针

    指针 数组指针和指针数组 函数指针和指针函数 指针作为参数 指针多用于处理值传递,减少值复制耗费的内存

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • 函数、数组与指针的关系

    假设我们要写一个统计数组中所有元素之和的函数,可以如下写法 以上代码告诉了我们的是,参数arr实际是一个数组的首元...

网友评论

      本文标题:指针与数组和函数的几个关系

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