【问题标题】:Create pointer to value in one line在一行中创建指向值的指针
【发布时间】:2016-04-13 21:12:29
【问题描述】:

我想在一行中创建一个指向值的指针;我想要与此相同的功能:

int i = MY_VALUE
int * j = &i;

但是,我想在一行中执行此操作,并且不想使用两个变量。我知道我可以这样做:

int * i = new int (MY_VALUE);

但我不想使用动态内存;我想使用静态内存。

有没有一种方法可以在一行中用一个变量静态地分配一个指向值的指针?

【问题讨论】:

  • 今天的 C++ 真的有一个激增或随机的问题,还是只有我?
  • 这个问题是关于 C 还是 C++ 的? C here 有一个副本。
  • 你能解释一下为什么你需要它在一行上而不使用两个变量吗?这可能有助于我们提出一个可接受的解决方案......
  • @Quentin 这是关于 C++ 的,但我认为两种语言的答案可能相同。
  • @Brian 当然,如果不能做我想做的事,我可以使用两个变量。我想用一个变量来做这件事,因为两个变量可能有一个潜在的开销。

标签: c++ pointers initialization static-memory-allocation


【解决方案1】:

如果你必须...

int i = 5, *p = &i;

【讨论】:

  • 只是说,虽然它是一行,而不是一个变量,反正.. :)
  • @SouravGhosh 是的,我刚刚重新阅读了这个问题......并且对回答它失去了兴趣。 ://
【解决方案2】:

不,你不能有一个指向值的指针,你只能有一个指向变量的指针指向一个对象(左值)的指针 em>。

详细说明,从 C 开始,引用 C11 章节 §6.5.3.2 以了解 & 运算符的用法

一元 & 运算符的操作数应为函数指示符, [] 或一元 * 运算符,或指定不是位域且是 未使用寄存器存储类说明符声明。

所以,类似于

int * p = &10;

完全无效。

【讨论】:

  • C++14 实际上已经修改了措辞。但是,当然,您仍然不能获取指向值的指针。
  • @SergeyA 你提到的最后一部分是我试图强调的。 :)
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多