ASturct arr []和ASturct * arr []有什么区别?
ASturct array[]
ASturct * array[]
谢谢你的回答!
答案 0 :(得分:1)
- threadId:Thread 11208 - state:BLOCKED stackTrace: - java.util.HashSet.add(java.lang.Object) @bci=8, line=217 (Compiled frame; information may be imprecise)
- java.util.AbstractCollection.addAll(java.util.Collection) @bci=29, line=342 (Compiled frame)
- java.util.LinkedHashSet. (java.util.Collection) @bci=22, line=169 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.metamodel.ManagedTypeImpl.getAttributes() @bci=13, line=160 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.metamodel.IdentifiableTypeImpl.initializeIdAttributes() @bci=12, line=95 (Compiled frame)
- org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.initialize(java.lang.ClassLoader) @bci=251, line=493 (Compiled frame)
- org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.getMetamodel(java.lang.ClassLoader) @bci=25, line=3476 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(java.lang.ClassLoader, java.util.Map) @bci=955, line=754 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession() @bci=54, line=205 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(java.util.Map, javax.persistence.SynchronizationType) @bci=5, line=305 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(java.util.Map, javax.persistence.SynchronizationType) @bci=90, line=337 (Interpreted frame)
- org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager() @bci=3, line=303 (Interpreted frame)
上面是ASturct类型的数组。
ASturct array[]
这一个是指针数组(ASturct类型)。
答案 1 :(得分:0)
您似乎对数组和指针的工作方式存在基本的误解。
让我们举一个非常简单的例子:
int a = 1;
int b = 2;
int c = 3;
int array1[3] = { a, b, c };
上面的代码创建了一个包含三个int
值的数组。在内存中它看起来像
+---+---+---+ | 1 | 2 | 3 | +---+---+---+
变量a
,b
和c
不在数组中的任何位置,在初始化数组时,这些变量的值被复制到数组中。
现在让我们来一个 非常不同的 示例:
int a = 1;
int b = 2;
int c = 3;
int *array2[3] = { &a, &b, &c };
现在我们有一个数组指针,并初始化每个元素以指向变量a
,b
和c
。它在内存中看起来像这样
+----+----+----+ | &a | &b | &c | +----+----+----+ | | | | | v | | +---+ | | | 3 | | | +---+ | v | +---+ | | 2 | | +---+ | v +---+ | 1 | +---+
上面示例中的array1
和array2
都是包含三个元素的数组,但相似之处到此为止。数组中每个元素的类型和值彼此非常不同。对于array1
,每个元素都是一个int
,它包含一个数字(例如1
为array1[0]
。对于array2
,每个元素都是指针到int
值,其值是int
值的地址。