我有一个功能
void myfunction(A**);
和一个变量
A a;
我正在尝试创建一个指向内联a
的指针的数组
myfunction( {&a} );
失败。它说我正在通过A*
。如果我写
A *aa[] = {&a};
myfunction( aa );
然后它起作用。
我可以内联创建A**
吗?
答案 0 :(得分:1)
您无法创建内联类型为A **的对象,因为表达式 <mat-form-field style="width: 100%;">
<label>
<input matInput placeholder="{{ getTranslateKey('startingRange.label') | translate }}" value="" formControlName="startingRange">
</label>
<mat-error *ngIf="ranges.get('startingRange').invalid">
<p>IP address is not valid.</p>
</mat-error>
</mat-form-field>
不是数组。
实际上与写相同
{&a}
根据C ++发行版,右侧表达式被视为initializer_list或类型为A **p = { &a };
的对象。
无论如何这种初始化都是无效的。
尽管需要一个中间变量,但您不必创建数组。
你可以写
A *
也许您应该考虑重新声明A *p = &a;
myfunction( &p );
之类的参数。
您可以执行与C程序中类似的操作。
这是一个演示程序
A * &
程序输出为
#include <stdio.h>
typedef int A;
void myfunction( A **p )
{
printf( "**p = %d\n", **p );
}
int main( void )
{
A x = 10;
myfunction( ( int *[] ){ &x } );
}
答案 1 :(得分:1)
我正在尝试创建一个指向内联指针的数组
myfunction( {&a} );
这不起作用,因为&a
是A*
,它与A**
是不同的类型,并且这些类型不能相互转换。
我可以内联创建A **吗?
是的,如果您有一个A*
变量:
A* pointer = &a;
myfunction(&pointer);
但不是直接来自A a
。