C指针与传递值的简单函数

时间:2012-06-04 04:56:16

标签: c

我想确认当我有一个排序功能时

int subtract(int a, int b)
{
return a-b;
}

当我调用减法(3,2)而不是指针时,我传递的值。

谢谢,

3 个答案:

答案 0 :(得分:2)

是的,你是

  • 类型int a的参数表示按值将整数传递给函数
  • 类型int* a的参数表示将指向某个整数的指针传递给函数。

所以对于这个

int subtract(int a, int b) 
{ 
   // even if I change a or b  in here - the caller will never know about it....
   return a-b; 
} 
你打电话是这样的:

int result  = substract(2, 1); // note passing values

指针

int subtract(int *a, int *b) 
{ 
   // if I change the contents of where a or b point the  - the caller will know about it....
   // if I say *a = 99;  then x becomes 99 in the caller (*a means the contents of what 'a' points to)
   return *a - *b; 
} 
你打电话是这样的:

int x = 2;
int y = 1;
int result  = substract(&x, &y); // '&x means the address of x' or 'a pointer to x'

答案 1 :(得分:1)

是的,C总是按值传递函数参数。要传递指针,您必须指定标识指针类型的星号(星号)。

请记住,即使在指针的情况下, C也始终通过值函数参数,在这种情况下,实际上会复制指针的地址。

答案 2 :(得分:0)

是的,你正在传递价值观。指针在类型名称之后和变量名称之前用星号表示。