读取指针声明

时间:2013-12-23 08:04:22

标签: 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;
}

我正在学习指针并且难以阅读int (*daytab)[13]声明。 int *px被读取为px是指向int的指针。

您如何阅读int (*daytab)[13]

1 个答案:

答案 0 :(得分:7)

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

有三个简单的步骤:

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

    [X][]
    =&GT;数组X大小为......或数组未定义大小...

    type1type2
    =&GT;函数传递type1type2返回...
    *
    =&GT;指针

  2. 以螺旋/顺时针方向继续这样做,直到所有标记都被覆盖。
  3. 首先在括号中解决所有问题!这将是有道理的;

  4.      +---------+              
         | +-----+ |     
         | ^     | |      ( 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 
     |   +-------+ |            
     +-------------+    
    

    以下是question的一些答案。全部阅读。