关于结构体、数组与指针的分析

#include <iostream>

using namespace std;

struct student{
int age;
int score;
};

void structDemo(student *s){
cout<<s->age<<endl;
}

int main(){
struct student s1 = {19,80};
structDemo(&s1);
student *sp = &s1;
student &ss = s1;
sp->age = 80;
ss.age = 90;
cout<<s1.age<<endl;
cout<<"——————————啦啦啦,我是分割线——————————"<<endl;
//下面是数组和指针的代码

int a[] = {3,45,345,4,5,4};
int *ap = a;
cout<<a[0]<<endl;
ap[0] = 99;
cout<<a[0]<<endl;
cout<<*(ap+1)<<endl;
cout<<*a<<endl;
return 0;


/* 1.试分析21行和30中初始化指针时,赋值方式不同的原因:
* 因为21行中的指针是student类型数据的指针,要储存的数据是student类型数据的地址,
* 所以在要传递地址的变量名前需要添加&。
* 而30行中的指针是用来储存int类型数据的指针,而我们要传递的地址是数组的首地址,也就是
* 数组名,所以就不需要在数组名前添加&。
*
* 2.试分析22行中用指针修改student类型数据时,不需要使用解引用符的原因:
* 固定形式,指针名->结构体成员
*
* 3.24行ss为结构体变量s1的引用,赋值运算符的左值,在本质上是s1的地址,所以
* 可以直接用“.属性”的形式调用s1的属性并且直接修改变量的数据。
*
* 4.数组的指针储存的是数组的首地址,而数组名也代表着数组首地址,从这个角度上看,数组名本身
* 就是一个指针,也可以从35行代码中看出。所以,对于某一数组的指针,存在用下标表示数组元素和
* 用解引用符加地址值的加减表示数组元素的两种方式,当然,对于数组本身来说也可以使用这两种方式
* 来表示数组元素。
*
* */

}

关于结构体、数组与指针的分析

上一篇:Visual Studio Code配置 C / C++ 环境


下一篇:C# 16进制与字符串、字节数组之间的转换