我在理解内存分配方面遇到了麻烦。
例如,如果我有一个结构如下:
struct AccountInfo{
int number;
int balance;
int past[9];
int minimum_past;
int maximum_past;
};
我如何访问数组past[9]
?一个更直接的问题是我如何找到past
的最小值和最大值,然后将这些值分配给minimum_past
和maximum_past
?
我理解将结构中的成员设置为某些值我可以像AccountInfo -> number = 10;
那样做但是对于数组我仍然感到困惑。
答案 0 :(得分:0)
我给你举了一个简单的例子。
在头文件中定义结构:
struct AccountInfo{
int number;
int balance;
int past[9];
int minimum_past;
int maximum_past;
};
在您的cpp文件中:
AccountInfo st_AccInfo;
访问您的结构:
int x = st_AccInfo.number;
for(int i=0; i<sizeof(st_AccInfo.past); i++)
{
// Navigate your Array from index 0 to 8
}
答案 1 :(得分:0)
好吧,当你将past
声明为9个整数的数组时,就像C ++计数从0开始的索引一样,你可以使用的索引越大而不调用未定义的行为就是8。
话虽如此,您使用的数组元素与其他结构元素完全相同:
AccountInfo accountInfo; // create a struct
AccountInfo* paccountInfo = &accountInfo; // define a pointer to it
accountInfo.last[8] = 12; // direct access
cout << paccountInfo->last[8] << endl; // access through pointer - outputs 12