4.5 两个常见C语言指针问题

问题一:我能否用void** 指针作为参数, 使函数按引用接受一般指针?

不可移植。

C 中没有一般的指针的指针类型。

void* 可以用作一般指针只是因为当它和其它类型相互赋值的时候,

如果需要, 它可以自动转换成其它类型;

但是, 如果试图这样转换所指类型为void* 之外的类型的void** 指针时,

这个转换不能完成。

问题二:我有一个函数extern int f(int *); 它接受指向int 型的指针。我怎样用引用方式传入一个常数?

下面这样的调用f(&5); 似乎不行。

在C99 中, 你可以使用“复合常量”:

f((int[]){5});

在C99 之前, 你不能直接这样做;

你必须先定义一个临时变量, 然后把它的地址传给函数:

int five = 5;

f(&five);

参见问题2.8, 4.4 和20.1。

永不止步步 发表于01-14 10:04 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号