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

Accessing a pointer to integer within a pointer to structure

本文关键字:指针 整数 访问 结构      更新时间:2023-10-16

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

,如果您可以帮助我访问指向整数变量的指针指向我已声明的结构变量中的整数变量的指针。

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

*var.testscores = new int[5];

您可以访问它:

var.testscores[3] = 100;

请注意,->操作员不会解除成员。您应该添加额外的星号或使用括号:

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

那时应该可以。

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

您以下代码。您没有为整数指针分配内存。

注意:不要忘记使用新的。

释放分配的内存。
#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;
}