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