【发布时间】:2019-01-30 23:43:25
【问题描述】:
我已经阅读了几个关于网站指针和互联网 PDF 的主题。但是有很多事情我到现在还不是很清楚:
在 PDF 中写到,可以将具有 10 行和 20 列的二维数组声明为 int (*ary)[20] 而不是 int array[10][20]
他们解释:
"
ary被定义为指向一组连续的指针, 一维、20 元素的整数数组。”
在互联网上的许多网站中,他们只是说int (*ary)[20] 是指向 20 个整数数组的指针的声明。
【问题讨论】:
-
这也是一个很好的问答集,尤其是关于 C 中数组的动态分配:stackoverflow.com/questions/42094465/…
-
看来您不应该信任该 PDF 的内容。
-
感谢您的回复。 To molbdnilo:因为数组不是指针,对吗?
-
对。数组不是指针。而学习数组和指针之间的实际关系是学习 C 中最棘手的事情之一。(但是一旦你掌握了它,它就非常有用了。)
-
10 行 20 列的二维数组可以声明为
int (*ary)[20]而不是int array[10][20]不,不能。阅读许多关于为什么这是错误的答案。主要区别在于int array[10][20]实际上 is 是一个数组 - 已分配内存。int (*ary)[20]是一个可以指向任何地方的指针。它可以指向一个数组并用于访问它,也可以指向一个无效的地址。声明该指针不会为实际数组创建或分配存储空间。 (作为评论发布以提前说明。)