zoukankan      html  css  js  c++  java
  • 指向结构体变量的指针

    定义:

    结构体变量的指针就是该变来那个所占据的内存段的起始地址。可以设一个指针变量,来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。

    设p是指向结构体变量的数组,则可以通过以下的方式,调用指向的那个结构体中的成员:

    (1)结构体变量.成员名。如,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;

    说明,结构体数组也和其他数组一样,一维数组的数组代表首个元素的地址

    我们了解到,结构体中可以包含很多类型的成员变量,那么可否包含指针变量成员呢?答案是可以的。

    那么是否也可以包含指向同类结构的结构体变量呢?当然可以,链表就是应用了这个原理。

    #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;
    }



  • 相关阅读:
    Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图
    Java文件IO操作应该抛弃File拥抱Paths和Files
    什么是内存(一):存储器层次结构
    mysql 锁
    Mysql索引面试题
    node.js中对同步,异步,阻塞与非阻塞的理解
    mysql 快照读 当前度
    mysql 联合索引
    redis 分布式锁(单机)
    docker 环境搭建redis集群相关问题
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3253802.html
Copyright © 2011-2022 走看看