• 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 }

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


  • 相关阅读:
    HCIA-IoT 华为认证物联网工程师
    [书目20210522]投资最重要的事
    [书目20210414]海龟交易法则
    [书目20210224]陆蓉 行为金融学讲义
    [书目20210207]肖星的财务思维课
    [转]昂克英文君 一张图告诉你英语该怎么学
    Cloud Native
    Aerospike-介绍
    Groovy使用场景
    javaStream与响应式流
  • 原文地址:https://www.cnblogs.com/surplusvalue/p/12123116.html
Copyright © 2020-2023  润新知