zoukankan      html  css  js  c++  java
  • C语言里的指针探析——type *name[] 在函数参数里面,是一个二维指针

    type *name[] 在函数参数里面声明和不在函数里面声明其实不一样。

    type *name[] 如果在函数参数里声明,则name 是一个二维指针,并不是一个指针数组,而如果不在函数参数里声明,则是一个指针数组。

    这可以通过sizeof 来确认。

    void func(char *name[])
    {
        printf("%d
    ", sizeof(name);
    }
    char *str[] = {" we", "are", "good
    "};
    
    func(str); // 输出4
    

    输出结果为4,从而可以知道name 一个指针,而不是数组,不然为什么sizeof 的结果不是指针数组的大小,也就是12( 4 *3)。

    下图是我的理解示意图

    二维指针与二维数组不一样,但是二维指针可以使用和二维数组一样的访问形式,即name[i][j]。

        int *num[3] = { 1, 3, 5};
        *num++;// error
        
    void func(int *num[])
    {
        *num++;// no error;   
    }
    

     不能对数组名进行自增,因为数组名标志数组的开始地址,但是可以对二维指针进行自增,因为二维指针是一个指针变量。

    原文地址

  • 相关阅读:
    Vue 介绍
    Django 组件-分页器
    Django 组件content_type
    DRF 解析器组件
    Django
    Django 组件-ModelForm
    Django 组件-用户认证
    Django 组件-中间件
    Django 组件-cookie与session
    Django CBV与FBV
  • 原文地址:https://www.cnblogs.com/celthi/p/4891378.html
Copyright © 2011-2022 走看看