源代码:
<pre name="code" class="cpp"><span style="font-size:14px;">#include<iostream> using namespace std; struct student { char name[20]; int num; int Class; double C; double math; }stu[5]={"he",1000,1501,90,90,"chu",1001,1502,88,88};//① int main() { cout<<stu[0].name<<' '<<stu[0].num<<' '<<stu[0].Class<<' '<<stu[0].C<<' '<<stu[0].math<<endl; student *p; stu[3].C=100; p=stu+1; cout<<(*p).name<<endl; //② cout<<p->num<<endl; //③ cout<<*(p-1)->name<<endl; //④ cout<<++p->C<<endl; //⑤ cout<<p->C<<endl; cout<<p->C++<<endl; //⑥ cout<<p->C<<endl; cout<<stu[3].C<<endl; return 0; }</span>
①.对于结构体的初始化,要么是在定义的时候进行初始化,此时是不需要的进行对特定值的声明的,假使在后面初始化的话就要指定特定的值,例如本代码中的stu[3].C=100;而不能能用这样的语句:stu[5]={"he",1000,1501,90,90,"chu",1001,1502,88,88};对非定义的结构体变量名进行,要是将stu[5]={"he",1000,1501,90,90,"chu",1001,1502,88,88};语句放于后面编译器的编译时通过不了的;
②.(*p).name,这里要表示的意思是取指针p所指向的值中name的成员;
③.-> 指向结构体变量运算符,此符号只能用来指向结构体中具体的数,不能用作指针指向变量;
④.这里加了一个*号表示的是输出第一个字符;
⑤.这里是优先级的关系,是使此时的这两自行累加1,而且这个结果还会储存在内存中;
⑥.这里是与i=i++一样的应用,只不过这里要注意的是可以改变储存在内存中的值。