通过引用和值传递int的好处?

时间:2012-03-30 09:48:54

标签: c

  1. 通过引用而不是按值传递ints是否有性能优势?我这样说是因为如果你通过引用传递你正在创建一个4字节的指针,但是如果你通过值传递,你仍然会创建一个4字节的值副本。所以他们都占用了额外的4个字节,对吧?
  2. 是否可以使用cast:(int *)通过引用传递int文字?或者你必须将指针传递给int?请参阅下面的示例代码:

    int func1(int *a){
        (*a)++; // edited from comment by Joachim Pileborg
        printf("%i\n", *a);
        return 0;
    }
    
    int func2(int a){
        a++;
        printf("%i\n", a);
        return 0;
    }
    
    int main(void){
        func1(&(int *)5); // an int literal passed by reference using a cast ?
        func2(5);
        return 0;
    }
    

1 个答案:

答案 0 :(得分:9)

传递指针(C中没有引用)的好处是函数可以更新原始int,即返回其中的值。没有性能优势;而且,传递指针可能会降低程序的速度,因为指向的int必须位于可寻址的内存中,因此它不能在寄存器中。

请注意,&(int *)5不符合您的预期。 (int *)5将值5强制转换为指针,将其解释为内存地址。 &将给出该指针的地址,除了获取临时地址是非法的。你可能意味着

int i = 5;
func1(&i);