Q我有一个函数
extern int f(int *);它接受一个指向int的指针。我该如何通过引用传递一个常量?像这样的调用
f(&5);似乎行不通。
A在 C99 中,你可以使用“复合字面量”
f((int[]){5});
在 C99 之前,你不能直接这样做;你必须声明一个临时变量,然后将其地址传递给函数
int five = 5; f(&five);在 C 语言中,一个接受指向值的指针(而不是简单地接受值本身)的函数,很可能打算修改被指向的值,因此将指针传递给常量可能是一个坏主意。[脚注] 事实上,如果f实际上被声明为接受一个int *,如果你试图将一个指向const int. (f的指针传递给它,则需要诊断。你可以声明为接受一个const int *,如果它保证不修改被指向的值的话。