在指向结构的指针内访问指向整数的指针

时间:2017-12-28 11:02:18

标签: c++ pointers structure

我很难尝试从*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;
}

如果你能帮助我在指向我声明的结构变量的指针中访问指向整数变量的指针,我真的很感激。

3 个答案:

答案 0 :(得分:1)

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

*var.testscores = new int[5];

您可以访问它:

var.testscores[3] = 100;

请注意->运算符不会取消引用该成员。您应该添加额外的星号或使用括号:

cout << *stPtr->testscores;
cout << stPtr->testscores[3];

那时应该可以。

答案 1 :(得分:0)

您的指针未初始化。可以使用new初始化它,或者更好地使用unique_ptr等智能指针来自动删除数据。

答案 2 :(得分:0)

你在下面的代码。你还没有为整数指针分配内存。

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

#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;
}