C++ 如何更改结构指针的单个成员的值? #包括 #包括 使用名称空间std; 结构学生{ 国际贸易编号; 煤焦级[14]; }; 无效集(结构学生*学生); 无效显示(结构学生); int main(){ 结构学生harry={975,“ABC”}; 集(&harry); 显示器(哈利); } 无效集(结构学生*学生){ 结构学生jim={306,“BBB”}; *student=jim;//这很有效 //*student.no=306;//不起作用 } 无效显示(结构学生){ cout

C++ 如何更改结构指针的单个成员的值? #包括 #包括 使用名称空间std; 结构学生{ 国际贸易编号; 煤焦级[14]; }; 无效集(结构学生*学生); 无效显示(结构学生); int main(){ 结构学生harry={975,“ABC”}; 集(&harry); 显示器(哈利); } 无效集(结构学生*学生){ 结构学生jim={306,“BBB”}; *student=jim;//这很有效 //*student.no=306;//不起作用 } 无效显示(结构学生){ cout,c++,C++,如果有指向结构的指针,则应使用->访问其成员: #include <iostream> #include <cstring> using namespace std; struct Student { int no; char grade[14]; }; void set(struct Student* student); void display(struct Student student); int main( ) {

如果有指向结构的指针,则应使用
->
访问其成员:

 #include <iostream>
 #include <cstring>
 using namespace std;

 struct Student {
     int no;
     char grade[14];
 };

 void set(struct Student* student);
 void display(struct Student student);

 int main( ) {
     struct Student harry = {975, "ABC"};

     set(&harry);
     display(harry);
 }
 void set(struct Student* student){
     struct Student jim = {306, "BBB"};

     *student = jim; // this works
     //*student.no = 306; // does not work
 }
 void display(struct Student student){

     cout << "Grades for " << student.no;
     cout << " : " << student.grade << endl;
 }

这是做
(*student)的语法糖。no=306;
。你的代码不起作用的原因是。没有括号,
的优先级高于
*
,你的代码相当于
*(student.no)=306;

如果有指向结构的指针,则应使用
->
访问其成员:

 #include <iostream>
 #include <cstring>
 using namespace std;

 struct Student {
     int no;
     char grade[14];
 };

 void set(struct Student* student);
 void display(struct Student student);

 int main( ) {
     struct Student harry = {975, "ABC"};

     set(&harry);
     display(harry);
 }
 void set(struct Student* student){
     struct Student jim = {306, "BBB"};

     *student = jim; // this works
     //*student.no = 306; // does not work
 }
 void display(struct Student student){

     cout << "Grades for " << student.no;
     cout << " : " << student.grade << endl;
 }

这是做
(*student)的语法糖。no=306;
。你的代码不起作用的原因是。没有括号,
的优先级高于
*
,你的代码相当于
*(student.no)=306;

运算符*
的优先级非常低,因此必须使用括号控制计算:

student->no = 306;
尽管它始终可以按以下方式进行:

(*student).no = 306;

在我看来,这要容易得多。

运算符*
的优先级非常低,因此您必须用括号控制求值:

student->no = 306;
尽管它始终可以按以下方式进行:

(*student).no = 306;
在我看来,这要容易得多。

你应该使用

student->no = 306;
虽然我们正在进行,但将结构按值传递给函数并不是一个好的实践

student->no = 36
//使用typedef它可以避免在任何地方编写struct。
类型定义结构{
国际贸易编号;
//此处使用常量字符*代替数组。
常量字符*等级;
}学生;
无效集(学生*学生);
无效显示(学生*学生);
int main(){
//分配dynmaic。
学生*哈里=新学生;
哈利->否=957;
harry->grade=“ABC”;
集(哈利);
显示器(哈利);
}
无效集(学生*学生){
学生->否=306;
}
无效显示(学生*学生){
不能你应该使用

student->no = 306;
虽然我们正在进行,但将结构按值传递给函数并不是一个好的实践

student->no = 36
//使用typedef它可以避免在任何地方编写struct。
类型定义结构{
国际贸易编号;
//此处使用常量字符*代替数组。
常量字符*等级;
}学生;
无效集(学生*学生);
无效显示(学生*学生);
int main(){
//分配dynmaic。
学生*哈里=新学生;
哈利->否=957;
harry->grade=“ABC”;
集(哈利);
显示器(哈利);
}
无效集(学生*学生){
学生->否=306;
}
无效显示(学生*学生){

我非常想让你看看OOP是如何用C++改变的。我强烈建议你看看OOP是如何用C++改变的。