C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 将变量传递给函数的成本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定函数调用是如何被翻译的,我担心传递的变量会在不需要时被复制到局部变量中.我可以通过使全局变量避免不必要的复制,但这不是一个好的解决方案……

1)当目标函数中的变量没有改变时,将它们作为指针,引用或const传递会更好吗?

void fkt1(int i,int j){
  do_something();
  printf("%d",i+j);
}

int main(){
  int i = 5;
  int j = 6;
  fkt1(i,j);
}

2)当变量未在其中使用时将变量传递给函数是否昂贵.例如,保持通用接口,例如:

template <typename T>
void fkt2(T a,T b,int len = -1){ 
  do_something();
  printf("%d",a+b);
}

template<>
void fkt2<char*>(char* a,char* b,int len){
  do_something();
  strcpy(a+len,b);
  printf("%s",a);
}

要么

class base{
public:
  virtual bool calc(int i,int j,int k,int l) = 0;
  base *next1;
  base *next2;
}

class derived1 : public base{
public:
  bool calc(int i,int l){
    return (next1->calc(int i,int l) || 
            next2->calc(int i,int l))
  }
}    

class derived2 : public base{
public:
  bool calc(int i,int l){
    return (return i+j > 5)
  }
}    

class derived3 : public base{
public:
  bool calc(int i,int l){
    return (return j*k < l)
  }
}

评论非常感谢.

解决方法

此时不要担心性能问题.

专注于功能的算法成本,而不是琐碎的事情:猜测性能问题是一个坏主意.

如果您确实遇到了性能问题并且具有可维护的代码,那么仍然需要时间来改进它.

现在要真正回答这个问题:

当您必须传递的对象确实不应该被复制时,您可以传递const引用.如果你必须传递整数或简单的结构(也就是小类型),使用COnst引用甚至指针可能工作太多:如果编译器可能无论如何都会对事物进行优化,那么你将会以非常复杂的方式混乱代码.

大佬总结

以上是大佬教程为你收集整理的c – 将变量传递给函数的成本全部内容,希望文章能够帮你解决c – 将变量传递给函数的成本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。