如何使用C++指针访问结构中的数组元素



我有下面的函数和下面的结构。

void function(TestStruct *array) {   
for (int i = 0; i < 3; i++){
array[i].value = 0;
array[i].remove = true;
}
}

struct TestStruct
{
int value;
bool remove;
};
int main(){
TestStruct sampleStruct[3];
sampleStruct[0].value = 1;
sampleStruct[1].value = 2;
sampleStruct[2].value = 3;
sampleStruct[0].value = false;
sampleStruct[1].value = false;
sampleStruct[2].value = false;
function(sampleStruct);
}

但是,sampleStruct中的值不会更改。调试时,函数只能访问数组0x0025fb64 {Value = 1 remove = false}的第一个索引,但即使是第一个索引也没有更改。

换句话说,我正在尝试访问完整的sampleStruct地址来更改值。

对我来说,这很好。我唯一更改的是.value=false到.remove=false(因为这可能是你想要的(。代码:

#include <iostream>
using namespace std;
struct TestStruct
{
int value;
bool remove;
};

void function(TestStruct *array) {   
for (int i = 0; i < 3; i++){
array[i].value = 0;
array[i].remove = true;
}
}
int main(){
TestStruct sampleStruct[3];
sampleStruct[0].value = 1;
sampleStruct[1].value = 2;
sampleStruct[2].value = 3;
sampleStruct[0].remove = false; // changed to .remove
sampleStruct[1].remove = false; // changed to .remove
sampleStruct[2].remove = false; // changed to .remove
function(sampleStruct);
for (int i = 0; i < 3; i++) // prints "0 1" 3 times
cout << sampleStruct[i].value << ' ' << sampleStruct[i].remove << 'n';
}

最新更新