我正在努力尝试从*testscores
访问*stPtr
。
#include <iostream>
using namespace std;
struct GradeInfo{
char name;
int *testscores;
double average;
};
int main(int argc, char *argv[]) {
GradeInfo var;
*var.testscores = 10;
cout << *var.testscores;
GradeInfo *stPtr = &var;
// This line of code breaks my test program
cout << stPtr->testscores;
return 0;
}
如果你能帮助我在指向我声明的结构变量的指针中访问指向整数变量的指针,我真的很感激。
您应该首先为其分配空间来存储实际数据:
*var.testscores = new int[5];
你可以访问它:
var.testscores[3] = 100;
请注意,->
运算符不会取消引用该成员。您应该添加额外的星号或使用括号:
cout << *stPtr->testscores;
cout << stPtr->testscores[3];
那时应该可以。
您的指针未初始化。用new
初始化它,或者更好的是,使用智能指针,如unique_ptr
,它将自动处理你的数据删除。
你在下面的代码。您还没有为整数指针分配内存。
注意:不要忘记用new释放分配的内存。
#include <iostream>
using namespace std;
struct GradeInfo{
char name;
int *testscores;
double average;
};
int main(int argc, char *argv[]) {
GradeInfo var;
var.testscores = new int(10);
cout << *var.testscores << endl;
GradeInfo *stPtr = &var;
cout << *(stPtr->testscores) << endl;
delete(var.testscores);
return 0;
}