C++ 在指向结构的指针中访问指向整数的指针

C++ 在指向结构的指针中访问指向整数的指针,c++,pointers,structure,C++,Pointers,Structure,我很难从*stPtr访问*testscores #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 << *v

我很难从
*stPtr
访问
*testscores

#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;
}
#包括
使用名称空间std;
结构等级信息{
字符名;
int*测试分数;
双倍平均;
};
int main(int argc,char*argv[]){
等级信息变量;
*var.testscores=10;

cout您的指针未初始化。请使用
new
对其进行初始化,或者最好使用智能指针,如
unique\u ptr
,该指针将自动处理数据删除操作。

您应首先为其分配空间以存储实际数据:

*var.testscores = new int[5];
您可以访问以下内容:

var.testscores[3] = 100;
请注意,
->
运算符不会取消对成员的引用。您应该添加额外的星号或使用括号:

cout << *stPtr->testscores;
cout << stPtr->testscores[3];
cout测试分数;
cout测试分数[3];

这时应该可以了。

您可以在下面输入这段代码。您还没有为整数指针分配内存

注意:不要忘记用新的内存释放分配的内存

#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;
}
#包括
使用名称空间std;
结构等级信息{
字符名;
int*测试分数;
双倍平均;
};
int main(int argc,char*argv[]){
等级信息变量;
var.testscores=新整数(10);

您是否应该初始化var.testscores,因为它是一个指针
*var.testscores=10;
testscores
指向您访问该地址的确切位置是什么?您还没有为指针
testscores
分配任何指向的空间。“我遇到了困难”和“这行代码破坏了我的测试程序”不是问题描述。发生了什么?如果您有任何错误,请完整引用它们。它们需要动态数组,因此应该使用
std::vector
,而不是智能指针。当然,不要忘记
delete[]
以后再使用该数组。然后意识到你应该改用
std::vector
:p你忘了用
delete
释放内存。不要只是说出来,把它写在你的代码中。我添加了一个便条。再看一遍这篇文章。注意:别忘了用new释放分配的内存。