在本例中,主要是理解指针如何与数组一起工作的一个简短问题:

char *lineptr[MAXLENGTH]

现在我知道这和char **lineptr是一样的,因为数组本身就是一个指针。
我的问题是,它是如何以不同的形式/非引用状态工作的,例如:
lineptr
*lineptr
**lineptr
*lineptr[]

在这些状态中,发生了什么,每个状态在代码中做什么/工作?
非常感谢您的帮助!

最佳答案

现在我知道这和char **lineptr是一样的,因为数组本身就是一个指针。
不,数组和指针不一样。请参阅C常见问题解答:http://c-faq.com/aryptr/index.html

lineptr

这是数组本身。在大多数情况下,它会衰减为指向其第一个元素的指针(即&lineptr[0])。所以它的类型不是int *[MAXLENGTH]就是int **
*lineptr

这将取消引用指向第一个元素的指针,因此它是第一个元素的值(即,它与lineptr[0]相同)。它的类型是int *
**lineptr

这将取消对第一个元素的引用(即,它与*lineptr[0]相同)。它的类型是int
*lineptr[]

我认为这不是有效的语法(在这个上下文中)。

09-04 02:19