一个简短的问题主要是在这个例子中理解指针如何与数组一起工作:
char *lineptr[MAXLENGTH]
Run Code Online (Sandbox Code Playgroud)
现在我明白这与char **lineptr数组本身就是一个指针是一样的.
我的问题是它如何以不同的形式/去引用状态工作,例如:
lineptr
*lineptr
**lineptr
*lineptr[]
Run Code Online (Sandbox Code Playgroud)
在每个状态中,发生了什么,每个州在代码中做什么/工作?
任何帮助深表感谢!
现在我明白这与
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)
我认为这不是有效的语法(在此上下文中).