常数的地址[英] Address of a constant

问题描述

我有一个函数 f,其原型如下:int f(void *).
从我的 main() (或其他)我可以做类似

整数 x = 123456 ;
整数 ;

y = f(&x) ;

这很好.我的问题是,如何将 123456 整数传递给 f
不使用中间 x 变量?天真,我想要什么
做类似于

y = f(&123456) ;

这当然会导致语法错误.

推荐答案

"K.詹宁斯"<kj*******@reurgence.netwrites:
我有一个具有以下原型的函数 f:int f(void *).
从我的 main() (或其他)我可以做类似

整数 x = 123456 ;
请注意,123456 超出了 int 的可移植范围.
整数 ;

y = f(&x) ;

这很好.我的问题是,如何将 123456 整数传递给 f
不使用中间 x 变量?天真,我想要什么
做类似于

y = f(&123456) ;

这当然会导致语法错误.
在 C99 中,您可以使用复合文字,例如
y = f(&(int) {123456});

y = f((int[]) {123456});
(我不是 C99 专家,所以可能其中一个或两个是
由于某种原因错了.)

我认为在 C89 中没有办法做到这一点.
--
"程序员有权不知道你代码的许多细节
并且仍然做出合理的改变."
--Kernighan 和 Plauger,_软件工具_

"K.詹宁斯"写道:
>
我有一个具有以下原型的函数 f:int f(void *).
从我的 main() (或其他)我可以做类似

整数 x = 123456 ;
整数 ;

y = f(&x) ;

这很好.我的问题是,我怎样才能传递 123456 整数
到 f 而不使用中间 x 变量?天真,我什么
想做的是像

y = f(&123456) ;

这当然会导致语法错误.
为什么不用"int f(int);",更直接更安全.

--
<http://www.cs.auckland.ac.nz/~pgut001/pubs/vista_cost.txt>
<http://www.securityfocus.com/columnists/423>
<http://www.aaxnet.com/editor/edit043.html>
<http://kaadaitcha.cx/vista/dogsbreakfast/index.html>
缅因线网点的 cbfalconer

--
通过 http://www.teranews.com
的免费 Usenet 帐户发布

2007 年 5 月 25 日星期五 12:13:06 -0400,CBFalconer 写道:
"K.詹宁斯"写道:
>>
我有一个函数 f,其原型如下:int f(void *).从
我的 main() (或其他)我可以做类似

int x = 123456 ;
int y ;

y = f(&x) ;

这很好.我的问题是,如何在不使用中间 x 变量的情况下将 123456 整数传递给 f
?天真地,我想要
做的是类似

y = f(&123456) ;

这当然会导致语法错误.

为什么不用"int f(int);",这样更直接更安全.
因为在我对馈送的数据缓冲区感兴趣的情况下
to f 可以包含很多不同的数据类型,将被处理
在正确的上下文中适当地使用.

本文地址:https://www.itbaoku.cn/post/1050516.html

相关标签/搜索