【问题标题】:C Parameter Passing and PointersC 参数传递和指针
【发布时间】:2017-03-06 03:11:31
【问题描述】:
void f(int pv1, int *pv2, int *pv3, int pv4[]){
  int lv = pv1+ *pv2 + *pv3 + pv4[0];
  pv1= 11;
  *pv2= 22;
  *pv3= 33;
  pv4[0]= lv;
  pv4[1]=44;
 }

int main(void){
  int lv1=1, lv2=2;
  int *lv3;
  int lv4[]= {4,5,6};
  lv3= lv4+2;
  f(lv1, &lv2, lv3 , lv4);
  printf("%i,%i,%i\n", lv1, lv2, *lv3);
  printf("%i,%i,%i\n", lv4[0], lv4[1], lv4[2]);
  return 0;
}

答案:1 22 33

我不明白怎么做。

我的工作: lv1=1, lv2=2, lv3 = lv4+2= 6, lv4[]= {4,5,6}

经过f()后, Lv1=11, lv2=22, lv3=33, lv4[0]=13 and lv4[1]=44

【问题讨论】:

标签: c pointers parameters parameter-passing


【解决方案1】:

这里没有什么是不明白的。

  • pv1= 11; 不会影响lv1 的值,因为您只是在f() 中填充局部变量pv1,而不是任何指针。 pv1 参数按值传递,并成为 f() 的本地参数。

  • *lv3lv2 的值更新为 22 和 33。因为,您使用指针更新地址中的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2013-04-03
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多