在这个例子中,一个简短的问题主要是理解指针如何与数组一起工作:
char *lineptr[MAXLENGTH]
现在我明白这与 char **lineptr
相同,因为数组本身就是一个指针。
我的问题是它如何以不同的形式/取消引用的状态工作,例如:
lineptr
*lineptr
**lineptr
*lineptr[]
在每个状态中,发生了什么,每个状态在代码中做什么/工作?
非常感谢任何帮助!
最佳答案
Now I understand this is the same as
char **lineptr
as an array in itself is a pointer.
不,数组与指针不同。请参阅 C 常见问题解答:http://c-faq.com/aryptr/index.html .
lineptr
这是数组本身。在大多数情况下,它衰减为指向其第一个元素的指针(即&lineptr[0]
)。所以它的类型是 int *[MAXLENGTH]
或 int **
。
*lineptr
这取消了指向第一个元素的指针,因此它是第一个元素的值(即它与 lineptr[0]
相同)。它的类型是int *
。
**lineptr
这取消引用了第一个元素(即它与 *lineptr[0]
相同)。它的类型是int
。
*lineptr[]
我不认为这是有效的语法(在这种情况下)。
关于c - 关于数组和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662715/