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 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 };
上面的代码创建了一个包含三个
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 | +---+