例如,我可以采取
var associateRequest = new AssociateRequest
{
Target =
new EntityReference(
SalesOrder.EntityLogicalName,
salesOrderGuid),
RelatedEntities =
new EntityReferenceCollection
{
new EntityReference(
Annotation
.EntityLogicalName,
noteGuid)
},
Relationship = GetRelationship<SalesOrder>(nameof(SalesOrder.SalesOrder_Annotation)) ///////////????
};
并仅通过强制转换指针将其转换为int array[12];
,并假设char[48]
在我的机器上是4个字节?这个的正确语法是什么,它是否适用?
我知道新数组的大小不会是明确的,即我必须自己进行分组,再次,知道我的机器{{1是4个字节。
答案 0 :(得分:1)
正确的C ++方式是使用reinterpret_cast:
int array[12];
char* pChar = reinterpret_cast<char*>(array);
您应该注意sizeof(array)
将12*sizeof(int)
等于12 * (sizeof(int) / sizeof(char))
,因为sizeof(char),大多数(如果不是)任何机器都大于sizeof(char[3])
)通常是sizeof(int)
的四分之一。
因此,int array[12];
可以作为char array[12*4];
答案 1 :(得分:1)
您可以使用reinterpret_cast
将大多数指针类型转换为大多数其他指针类型。
用法:auto ptr = reinterpret_cast<char*>(array);
。
您可以使用int
作为常量,而不是依赖于系统上sizeof(int)
为4个字节的事实。你的问题的措辞让你觉得你可能会对这个&#34; size&#34;转换为char*
时的数组。 int
比sizeof(int)
大char
倍。如果sizeof(int) == 4
,那么您的int
会占用数组中的4 * 12 = 48
个字节,而不是3个。
答案 2 :(得分:0)
int array[12];
char * p = (char *) array;
// do what you want with p
当然,p
没有类型char[3]
,但这对您来说可能并不重要。