【问题标题】:Possible to declare/assign an int* in one line? [duplicate]可以在一行中声明/分配一个 int* 吗? [复制]
【发布时间】:2021-01-07 05:14:09
【问题描述】:

是否可以在 C 中执行以下操作?

int *NumPtr = & (int) 44;

或者这是否需要“通过”一个中间变量来完成,例如:

int Num = 3, *NumPtr;
NumPtr = &Num;

【问题讨论】:

  • 您希望int *NumPtr = & (int) 44; 做什么?它的地址是什么?当你尝试它时会发生什么?我建议编译并运行以找出答案。
  • 44 是一个文字 - 也就是说,它不像变量那样分配内存。所以,获取地址并不完全可行!

标签: c pointers


【解决方案1】:

您可以使用compound literal

int *NumPtr = &(int){44};

复合字面量通常用于创建匿名数组或结构,但它们也可以在这里使用。

【讨论】:

  • 这很酷,谢谢! NumPtr = & (int) {44};printf("Num: %d, NumPtr: %d (%p)\n", Num, *NumPtr, NumPtr);
猜你喜欢
  • 2013-11-03
  • 2011-03-16
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2012-04-08
相关资源
最近更新 更多