关于数组和指针

PnP*_*PnP 0 c arrays pointers

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

char *lineptr[MAXLENGTH]
Run Code Online (Sandbox Code Playgroud)

现在我明白这与char **lineptr数组本身就是一个指针是一样的.

我的问题是它如何以不同的形式/去引用状态工作,例如:

lineptr
*lineptr
**lineptr
*lineptr[]
Run Code Online (Sandbox Code Playgroud)

在每个状态中,发生了什么,每个州在代码中做什么/工作?

任何帮助深表感谢!

Oli*_*rth 5

现在我明白这与char **lineptr数组本身就是一个指针是一样的.

不,数组与指针不同.请参阅C FAQ:http://c-faq.com/aryptr/index.html.

lineptr
Run Code Online (Sandbox Code Playgroud)

这是数组本身.在大多数情况下,它变成指向其第一个元素(即&lineptr[0])的指针.所以它的类型是int *[MAXLENGTH]int **.

*lineptr
Run Code Online (Sandbox Code Playgroud)

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

**lineptr
Run Code Online (Sandbox Code Playgroud)

这取消了第一个元素的引用(即它是相同的*lineptr[0]).它的类型是int.

*lineptr[]
Run Code Online (Sandbox Code Playgroud)

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