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