我在C中有一个大数组(如果有所不同,则不是C++).我想将所有成员初始化为相同的值.我发誓我曾经知道一个简单的方法来做到这一点.我可以memset()在我的情况下使用,但是没有办法在C语法中构建这样做吗?
我在C++中有以下类:
class a {
const int b[2];
// other stuff follows
// and here's the constructor
a(void);
}
Run Code Online (Sandbox Code Playgroud)
问题是,如何在初始化列表中初始化b,因为我无法在构造函数体内初始化它,因为b是const?
这不起作用:
a::a(void) :
b([2,3])
{
// other initialization stuff
}
Run Code Online (Sandbox Code Playgroud)
编辑:这个例子就是我可以b为不同的实例设置不同的值,但是已知这些值在实例的生命周期内是不变的.
在C中,如果我没记错的话,您可以使用花括号语法轻松初始化数组:
int* a = new int[] { 1, 2, 3, 4 };
Run Code Online (Sandbox Code Playgroud)
当您希望初始化具有特定测试值的矩阵用于数学目的时,如何在Fortran中对二维数组执行相同的操作?(无需对单独的语句中的每个元素进行双重索引)
该数组由.定义
real, dimension(3, 3) :: a
Run Code Online (Sandbox Code Playgroud)
要么
real, dimension(:), allocatable :: a
Run Code Online (Sandbox Code Playgroud) 我还是C#的新手,我一直在努力解决阵列上的各种问题.我有一组元数据对象(名称值对),我想知道如何只创建我真正需要的"InputProperty"对象的数量.在这个循环中,我任意设置元素的数量为20,当条目变为null时我试图挽救但是接收端的Web服务不喜欢传递给它的任何null元素:
private Update BuildMetaData(MetaData[] nvPairs)
{
Update update = new Update();
InputProperty[] ip = new InputProperty[20]; // how to make this "dynamic"
int i;
for (i = 0; i < nvPairs.Length; i++)
{
if (nvPairs[i] == null) break;
ip[i] = new InputProperty();
ip[i].Name = "udf:" + nvPairs[i].Name;
ip[i].Val = nvPairs[i].Value;
}
update.Items = ip;
return update;
}
Run Code Online (Sandbox Code Playgroud)
总之,假设我在上面的输入数组中只有3个名值对?不是为名为ip的数组分配20个元素,而是如何对此进行编码,以便ip只有它需要的大.更新对象通过另一个Web服务传递,因此序列化很重要(即我不能使用namevaluecollection等).
ps是通过"添加评论"工具跟踪已发布问题的唯一方法吗?
public class Sample
{
static int count = 0;
public int abc;
public Sample()
{
abc = ++Sample.count;
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个上面的类数组,并希望通过调用默认构造函数来初始化数组中的每个元素,以便每个元素可以有不同的abc.所以我这样做:
Sample[] samples = new Sample[100];
Run Code Online (Sandbox Code Playgroud)
但这并不符合我的想法.这似乎是默认构造函数没有被调用.如何在创建数组时调用默认构造函数?
我也想知道上面的陈述是做什么的?
我有一个二维数组,我需要加载数据.我知道数据的宽度(22个值),但我不知道高度(估计大约4000个记录,但变量).
我声明如下:
float[,] _calibrationSet;
....
int calibrationRow = 0;
While (recordsToRead)
{
for (int i = 0; i < SensorCount; i++)
{
_calibrationSet[calibrationRow, i] = calibrationArrayView.ReadFloat();
}
calibrationRow++;
}
Run Code Online (Sandbox Code Playgroud)
这会导致NullReferenceException,所以当我尝试像这样初始化它时:
_calibrationSet = new float[,];
Run Code Online (Sandbox Code Playgroud)
我得到一个"数组创建必须有数组大小或数组初始化程序."
谢谢,基思
我想初始化一个这样的数组 -
Const MyArray : Array[0..0] Of TGUID = (IInterface);
Run Code Online (Sandbox Code Playgroud)
但它导致 -
[DCC Error] Test.pas(10): E2010 Incompatible types: 'TGUID' and 'string'
Run Code Online (Sandbox Code Playgroud)
那么看看会发生什么我试过这个 -
Const MyArray : Array[0..0] Of String = (IInterface);
Run Code Online (Sandbox Code Playgroud)
结果就是这个!
[DCC Error] Test.pas(10): E2010 Incompatible types: 'string' and 'TGUID'
Run Code Online (Sandbox Code Playgroud)
多么奇怪!当然,IInterface是一个或另一个,但它似乎顽固地转变为错误的类型.
我需要在C#程序中对一系列点进行硬编码.C风格的初始化程序不起作用.
PointF[] points = new PointF{
/* what goes here? */
};
Run Code Online (Sandbox Code Playgroud)
怎么做?
我正在开发一个Android应用程序.
我想将大小设置为这样的char数组:
public char[5] language;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我必须删除第五个才能使它工作.
我想限制为语言变量的五个字符.我怎样才能做到这一点?
谢谢.