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

问题描述 投票:0回答:3

我正在努力尝试从*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;
}

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

c++ pointers structure
3个回答
1
投票

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

*var.testscores = new int[5];

你可以访问它:

var.testscores[3] = 100;

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

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

那时应该可以。


0
投票

您的指针未初始化。用new初始化它,或者更好的是,使用智能指针,如unique_ptr,它将自动处理你的数据删除。


0
投票

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

注意:不要忘记用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.