读取指针声明

use*_*772 3 c

# include <stdio.h>
# include <stdlib.h>    
int main(int argc, char *argv[])
{
    int daytab[2][13];
    int (*daytab)[13];
    int *px;

    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我正在学习指针并且难以阅读int (*daytab)[13]宣言. int *px读取为px指向a的指针int.

你怎么读int (*daytab)[13]

hac*_*cks 7

应用螺旋规则:是一种称为顺时针/螺旋规则的技术,它使任何C程序员都可以在头脑中解析任何C声明!

有三个简单的步骤:

  1. 从未知元素开始,以螺旋/顺时针方向移动; 当遇到以下元素时,用相应的英语语句替换它们:

    [X][]
    =>数组X大小...或数组未定义大小...

    (type1,type2)
    =>函数传递type1type2返回...
    *
    =>指针到

  2. 继续以螺旋/顺时针方向执行此操作,直到所有令牌都被覆盖.
  3. 始终先解决括号中的任何内容!这将是有道理的;

     +---------+              
     | +-----+ |     
     | ^     | |      ( daytab)        // daytab
int (*daytab)  [13];  (*daytab)        // daytab is a pointer
 ^   ^       | |      (*daytab)[13]    // daytab is a pointer to an array of 13
 |   |       | |      int(*daytab)[13] // daytab is a pointer to an array of 13 ints 
 |   +-------+ |            
 +-------------+    
Run Code Online (Sandbox Code Playgroud)

以下是这个问题的一些答案.全部阅读.