关于结构体的一些理解

源代码:

<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>


 
 


运行结果:

关于结构体的一些理解_第1张图片


  ①.对于结构体的初始化,要么是在定义的时候进行初始化,此时是不需要的进行对特定值的声明的,假使在后面初始化的话就要指定特定的值,例如本代码中的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++一样的应用,只不过这里要注意的是可以改变储存在内存中的值。


你可能感兴趣的:(结构体)