【问题标题】:What does this character pointer declaration mean? [duplicate]这个字符指针声明是什么意思? [复制]
【发布时间】:2012-05-09 12:34:41
【问题描述】:

可能重复:
C pointer to array/array of pointers disambiguation

char (*p)[4];char *p[4]; 有何不同?

【问题讨论】:

    标签: c pointers char


    【解决方案1】:

    http://cdecl.org/

    1. char (*p)[4]; -- 将 p 声明为指向 char 数组 4 的指针。
    2. char *p[4]; -- 将 p 声明为指向 char 的指针的数组 4。

    【讨论】:

    • 如何使用这个“p 作为指向 char 数组 4 的指针”
    • 是 *p[0]="Hello";或 *p[0]=(char *)malloc(10);对第一次声明有效
    • 我的意思是第一个是 4 个字符指针的数组吗?
    • 不,它是指向数组的指针,而不是数组。
    • 是不是和char p[4]一样;那么 p 在任何情况下都是基地址
    【解决方案2】:

    char (*p)[4];: p 是指向长度为 4 的 char 数组的指针。

                             char [4]
        points to              |
         char [4]              v
    
       +------+             +------+------+------+------+
       |  p   |------------>|      |      |      |      |
       +------+             +------+------+------+------+
                             char    char   char   char  
    
       p will point to a char [4] array. Array is not created. 
       p is intended to be assigned at address of a char [4]  
    

    char *p[4];p是一个长度为4的数组,数组的每个位置都是一个指向char的指针

                  +------+------+------+------+
       p          |      |      |      |      |
    an array      +------+------+------+------+
     itself          |      |      |      |
                     v      v      v      v  
                   char*  char*  char*  char*
    
      p is an array and will be allocated in stack (if automatic)
    

    【讨论】:

    • 对于指针,图片总是有帮助的:)
    • char (*p)[4] 的情况下,重要的是要注意声明不会创建数组,只是一个指向数组的指针。
    • @kittemon 更新了信息
    猜你喜欢
    • 2014-06-25
    • 2015-04-30
    • 2014-09-20
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多