1. 程式人生 > 其它 >關於結構體、陣列與指標的分析

關於結構體、陣列與指標的分析

#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行程式碼中看出。所以,對於某一陣列的指標,存在用下標表示陣列元素和
* 用解引用符加地址值的加減表示陣列元素的兩種方式,當然,對於陣列本身來說也可以使用這兩種方式
* 來表示陣列元素。
*
* */

}