使用指针初始化结构数组 - C ++ ......?

时间:2012-04-12 03:13:05

标签: c++ arrays pointers struct

如何使用指针初始化此struct数组?我尝试读取结构变量的输入,我得到垃圾输出,但是当我初始化静态数组时,我输出正确的变量。

    unsigned int data = numberOfLines();
    patient *q; //struct pointer

    q = new patient[data];

   //What I want to do
   q = new patient[data] = {0,0,0,0,0}; // initialize the array

3 个答案:

答案 0 :(得分:1)

您可能需要std:: fill()

#include <algorithm>

patient *patients = ...;
size_t count = ...;
std::fill(patients, patients + count, DEFAULT_PATIENT_VALUE);

答案 1 :(得分:0)

如果您使用的是non-POD type,请在患者阵列上循环并初始化每个细胞。

如果你想获得幻想,可以通过创建一个函数来获得一点灵活性。

patient * createInitializedPatientArray(patient defaultPatient, int length)
{
    patient * temp = new patient[length];
    for(int x = 0; x < length; x++) 
        temp[x] = defaultPatient;
    return temp;
}

答案 2 :(得分:0)

也许您正在寻找一种优雅的解决方案来清除整个结构阵列:

memset(q, 0, sizeof(patient) * data);

(假设您的结构仅包含POD类型)