我想确认当我有一个排序功能时
int subtract(int a, int b)
{
return a-b;
}
当我调用减法(3,2)而不是指针时,我传递的值。
谢谢,
答案 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)
是的,你正在传递价值观。指针在类型名称之后和变量名称之前用星号表示。