prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 4.10

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 *,如果它保证不修改被指向的值的话。

另请参阅问题 2.104.820.1


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管