C++中指向結(jié)構(gòu)體變量的指針
定義:
結(jié)構(gòu)體變量的指針就是該變來那個(gè)所占據(jù)的內(nèi)存段的起始地址??梢栽O(shè)一個(gè)指針變量,來指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址。
設(shè)p是指向結(jié)構(gòu)體變量的數(shù)組,則可以通過以下的方式,調(diào)用指向的那個(gè)結(jié)構(gòu)體中的成員:
(1)結(jié)構(gòu)體變量.成員名。如,stu.num。
(2)(*p).成員名。如,(*p).num。
(3)p->成員名。如,p->num。
#include<iostream>
#include<string>
using namespace std;
struct Candidate{
string name;
int count;
};
int main(){
Candidate c_leader[2]={"Tom",5,"Marry",8};
Candidate *p1,*p2;
p1=c_leader;
cout<<(*p1).name<<":"<<(*p1).count<<endl;
p2=&c_leader[1];
cout<<p2->name<<":"<<p2->count<<endl;
return 0;
}
p1=c_leader;
說明,結(jié)構(gòu)體數(shù)組也和其他數(shù)組一樣,一維數(shù)組的數(shù)組代表首個(gè)元素的地址
我們了解到,結(jié)構(gòu)體中可以包含很多類型的成員變量,那么可否包含指針變量成員呢?答案是可以的。
那么是否也可以包含指向同類結(jié)構(gòu)的結(jié)構(gòu)體變量呢?當(dāng)然可以,鏈表就是應(yīng)用了這個(gè)原理。
#include<iostream>
#include<string>
using namespace std;
struct Candidate{
string name;
int count;
Candidate *next;//定義了指向Candidate類型變量的指針
};
int main(){
Candidate c_leader[3];
c_leader[0].name="Tom";
c_leader[0].count=5;
c_leader[0].next=&c_leader[1];
c_leader[1].name="Nick";
c_leader[1].count=9;
c_leader[1].next=&c_leader[2];
c_leader[2].name="Jim";
c_leader[2].count=10;
c_leader[2].next=NULL;
Candidate *p=c_leader;
while(p!=NULL){
cout<<p->name<<":"<<p->count<<endl;
p=p->next;
}
return 0;
}
相關(guān)文章
C++數(shù)據(jù)封裝以及定義結(jié)構(gòu)的詳細(xì)講解
這篇文章主要詳細(xì)講解了C++數(shù)據(jù)封裝以及定義結(jié)構(gòu),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無二的二叉搜索樹之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無二的二叉搜索樹之二),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語言動(dòng)態(tài)內(nèi)存泄露常見問題內(nèi)存分配改進(jìn)方法詳解
今天遇見了一道有意思的內(nèi)存泄露題目,特地分享給大家,相信屏幕前的你學(xué)習(xí)完一定有所收獲,預(yù)祝讀者學(xué)習(xí)愉快,多多進(jìn)步早日升職加薪2021-10-10

