c - 关于数组和指针

标签 c arrays pointers

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

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/

相关文章:

c - 遍历字符串并在 C 中用空格分隔输入

c - 从 unsigned int 到 char 指针的类型转换中的段错误

c++ - 可以在 taskkill 命令期间调用 atexit() 吗?

Javascript 按初始位置和对象属性排序

C++ std::sort 函数没有完成?

C 指向函数指针的外部指针

c - 运算符 -> 在 malloc 函数中

c - 文件描述符未在 exec 上关闭

堆损坏,C 中的错误

Java 自变量 vs 数组性能