Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中读取声明_C_Pointers - Fatal编程技术网

如何在c中读取声明

如何在c中读取声明,c,pointers,C,Pointers,所以我对C语言是新手,我刚从Java来,我想了解如何阅读声明。 我知道我举了一个例子,但我希望能够阅读所有声明并清楚地理解它。我不是真的要你们解决这个问题,只是指导我 For example: int point *[]; int point *()[]; 要破译C声明,请使用左右规则 例如int点*[]; 读取时,点是指向int的指针数组 首先理解符号的含义 * // "pointer to" [] // "array of" () // "a

所以我对C语言是新手,我刚从Java来,我想了解如何阅读声明。 我知道我举了一个例子,但我希望能够阅读所有声明并清楚地理解它。我不是真的要你们解决这个问题,只是指导我

For example:
            int point *[];
            int point *()[];

要破译C声明,请使用左右规则

例如int点*[]; 读取时,点是指向int的指针数组

首先理解符号的含义

* // "pointer to"
[] // "array of"
() // "a function returning"
既然你知道了符号,你就可以破译任何声明了

比如说 int**指针`

步骤1查找标识符

在本例中,它是指针,所以您可以按指针的形式读取

步骤2使用左右规则

你们先向右移动,你们会碰到一个指针,所以你们会读到指针正在返回函数

步骤3:继续规则

然后再向右移动,但这里有一个右括号, 所以你们把标识符移到左边,这里有一个*,所以你们读的是指针是返回指针的函数

第四步继续规则

然后你继续向左移动,但是有一个圆括号,所以你不能向左移动,所以现在你向右移动。现在您到达了,您读到的是指针是函数返回的指针,指向函数返回的指针

第五步继续规则

现在无法向右移动,因为没有更多符号,所以向左移动并到达*, 您可以读为指针是函数返回指针到函数返回指针到

第六步继续规则

现在你不能向左或向右移动,因为你没有符号了,所以你读int, 你终于有了
指针是函数返回指针指向函数返回指针指向int

请检查:我们不是来教你的。你可以从C上的任何一本书中得到这个。我建议从第一个开始:如果你是C的新手,不要标记C++,除非你特别询问相似性或差异。虽然在这里可能没有什么不同,但是语言和它们解决问题的惯用方法可能会有很大的不同。int*点[];可以,但int点*[];没有道理。*需要修改类型-foo*表示指向“foo”类型对象的指针,但这里的点是变量名,而不是类型。请参阅int point*[];是无效的。指针数组应该是int*point[];。
int *(*pointer())();
       ^^^^^^^
int *(*pointer())();
             ^^
    int *(*pointer())();
          ^
int *(*pointer())();
                 ^^
int *(*pointer())();
    ^             
int *(*pointer())();
^^^