ASturct arr[]和ASturct*arr[]之间的差异
ASturct arr[]和ASturct*arr[]之间有什么区别ASturct arr[]和ASturct*arr[]之间的差异,c,pointers,C,Pointers,ASturct arr[]和ASturct*arr[]之间有什么区别 ASturct array[] ASturct * array[] 谢谢你的回答 ASturct array[] 上面一个是ASturct类型的数组 ASturct * array[] 这是指针数组(属于ASturct类型)。您似乎对数组和指针的工作方式有一个基本的误解 让我们举一个非常简单的例子: int a = 1; int b = 2; int c = 3; int array1[3] = { a, b, c
ASturct array[]
ASturct * array[]
谢谢你的回答
ASturct array[]
上面一个是ASturct类型的数组
ASturct * array[]
这是指针数组(属于ASturct类型)。您似乎对数组和指针的工作方式有一个基本的误解 让我们举一个非常简单的例子:
int a = 1;
int b = 2;
int c = 3;
int array1[3] = { a, b, c };
上面的代码创建了一个包含三个int
值的数组。在记忆中,它看起来像
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
现在我们有了一个指针数组,并初始化每个元素以指向变量a
、b
和c
。它在记忆中会像这样
+----+----+----+
| &a | &b | &c |
+----+----+----+
| | |
| | v
| | +---+
| | | 3 |
| | +---+
| v
| +---+
| | 2 |
| +---+
|
v
+---+
| 1 |
+---+
+----+----+----+
|&a&b&c|
+----+----+----+
| | |
||v
| | +---+
| | | 3 |
| | +---+
|五
| +---+
| | 2 |
| +---+
|
v
+---+
| 1 |
+---+
上述示例中的
array1
和array2
都是具有三个元素的数组,但相似之处到此为止。数组中每个元素的类型和值彼此非常不同。对于array1
每个元素都是一个int
,它包含一个数字(例如array1[0]
的1
)。对于array2
每个元素都是指向int
值的指针,其值是该int
值的地址。你知道什么是char
和char*
吗?是的,我知道,但区别是什么?char是变量的类型,char*是char的指针type@EmilMein否,char
和char*
都是类型。不同类型。与ASturct
(无论是什么)和ASturct*
相同。两种类型,但两种不同的类型。您可以使用类型为ASturct
的变量和类型为ASturct*
的另一个变量。现在,请将这两种变量视为数据类型并回答您自己的问题。哦,除非您将array
声明为函数的参数,否则数组的大小不能为空。谢谢您的帮助。
+----+----+----+
| &a | &b | &c |
+----+----+----+
| | |
| | v
| | +---+
| | | 3 |
| | +---+
| v
| +---+
| | 2 |
| +---+
|
v
+---+
| 1 |
+---+