• C语言 两个跟结构(struct)有关的参数传递问题



     一、int型变量i跟只包含一个int型成员的结构变量s在参数传递时的不同

      参数在传递时首先尽可能地存放到寄存器中(追求速度)。注意,int型变量i跟只包含一个int型的成员的结构struct变量s在参数传递时的方式可能完全不同。一个int型参数一般会被传递到寄存器中,而结构struct参数则很可能被传递到堆栈中。(一个放在CPU中,一个放在内存中)


    二、在结构struct中放置数组

    /* 数组位于结构内部 */
    struct s_tag {int a[100];}

       现在,可以把数组当作第一等级的类型,用赋值语句拷贝整个数组,以传值调用的方式把它传递到函数,或者把它作为函数的返回类型

     1 struct s_tag { int a[100]; };
     2 struct s_tag orange,  lime, lemon;
     3 struct s_tag twofold{struct s_tag s){    //以传值调用的方式把它传递到函数
     4     int j;
     5     for( j=0; j<100; j++) s.a[j] *=2;
     6     return s;      //把它作为函数的返回类型
     7 }
     8 
     9 main(){
    10     int i;
    11     for(i=0; i<100; i++) lime.a[i]=1;
    12     lemon = twofold(lime);
    13     orange = lemon;     //用赋值语句拷贝整个数组
    14 }

       在典型情况下,并不会频繁地对整个数组进行赋值操作。但是如果要这样做,可以通过把它放入结构中来实现。


  • 相关阅读:
    静态导入
    OC中的Debug表达式
    友盟消息推送(一)
    Xcode7.0 更新完后,网络请求报错
    HTTP返回的状态码
    ios 通知监听App进入后台,然后再进入App(获取验证码的时间间隔)
    iOS保存model数据(自定义Model 可以存放到本地)
    tatableView 刷新
    iOS bounds和Frame的区别
    UIButton下面添加滑动的线
  • 原文地址:https://www.cnblogs.com/surplusvalue/p/12123116.html
Copyright © 2020-2023  润新知