Struct 与 Class 的 小小关联与类比

结构数据(struct )作为参数传递【与C++的 class 类  相仿】
    注意,依旧是简单的单向的值传递;

          除了值的传递以外,还可以进行结构的返回。

         但是:系统仍旧是新开辟一个空间,与原空间不一样。
    单向值传递:eg: void getpoint  (struct point p){ scanf("%d",&p.x); printf("%d",p.x);}                       
                                                  
               【main 函数中,将q传递给p,这个时候,开辟一个新空间,并不指向原空间q。对于输入的值,再输出时,是输出p.x的值,但未改变q.x的原来的值。】,所以,若再输出q.x,结构依旧为0。                                   
                                void(main){ struct point q={0,0};  getpoint(q);}
        



    需要注意:若需要指向同一个空间,要用到C++中的独立应用或者 形参变为*p(指针形式)。这个时候注意,当形参变为指针形式的时候,传递的实参的形式要有所改动,eg: void(main){ struct point p, r; r=sumpoint(&p);  

   加了“&” 符号,相当于传递了地址。
    返回一个结构:  eg: #include<stdio.h>  struct point {int x; int y;};    

  声明函数: struct point sumpoint (struct point p1, struct point p2){struct point q;           q.x=p1.x+p2.x; return q;     }                                                                                                 int main(){struct point pp1={1},pp2={2};pp3; pp3=sumpoint (pp1,pp2);  

 【注意:在调用sumpoint函数的时候,是返回一个结构q,而在main 函数中,pp3=q,相当于一个简单的拷贝,所以,在输出pp3.x的值的时候,就是输出 q.x的值】
        这里需要注意一个点:有两个结构的传递:sumpoint(struct pont p)【第一个】,在sumpoint 函数前,加了 struct point 这个“名”。【第二个】
            而这特点和后续的C++  class 类 是一样的
            在传递结构的过程,是传递首地址。



共用体结构【注意概念】 
    形式和在main函数中的说明都和 struct 函数一样【包括引用方式也一样】
    注意点:1.所有成员共享一个空间;2.同一个时间只有一个成员是有效的;3.只可以初始化第一个成员;
        只可以初始化第一个成员: union data a={12};✔       union data a={12,10}  ❌;
        a.i=1;a.ch="xiaoming";a.f=1.5     最终的结果输出只有a.f 的值 1.5。
            因为: 共用体变量和他的成员公用一个地址
        同理,也不可以整体赋值; a=....  ❌
 



微信公众号:晓白资源

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值