【问题标题】:Is there a data object that is not a variable or a constant?是否存在不是变量或常量的数据对象?
【发布时间】:2020-08-15 18:07:43
【问题描述】:

我是一名学习编程的学生。 我正在学习编程语言学,我正在寻求帮助,因为在解决问题时有一部分效果不佳。

问题如下:

对于您熟悉的语言中的元素数据类型,请执行以下操作:

A. ...

B.显示执行期间存在该类型的数据对象既不是变量也不是常量的情况。

C. ...

这里没看懂的部分是题号B。根据教科书,数据对象是变量或者常量,常量可以分为字面量和命名常量,但是既不是变量也不是常量的数据对象可以是成立。非常感谢您的帮助。

我是通过将我熟悉的语言设置为 C 语言来解决问题的。

【问题讨论】:

  • B 的文字没有意义,或者至少使用了奇怪的术语。什么是“情境绘画创新”?对象“可能或常数的指数”是什么意思?
  • 我认为,如果您想回答“C 中是否存在不是变量或常量的数据对象”这个问题,那么您必须具体定义“数据对象”的含义, “变量”和“常数”。
  • 嗯...对不起。我认为程序员会知道这一点,因为这是他们从编程语言中学到的东西,但我想他们在这里学到的东西并不重要。数据对象是指包含数据的内存空间,可以作为变量。我不认为它与变量的含义完全相同。
  • 哦,对不起。搬题的过程中没看出有什么不对,所以写了下来。我刚刚解决了这个问题。
  • 常量和变量是编译时构造,但“数据对象”听起来像是运行时构造。 C 没有单一的“常量”概念——它有像 #define K 42 这样的预处理器,你可以称之为常量,它有用 const 注释的变量,它有像 42 这样的文字,它有文字字符串对其进行修改是未定义的行为。这就是为什么我要求对您如何使用这些术语进行具体定义。 [注意,我拥有编程语言语义领域的博士学位]

标签: c data-objects


【解决方案1】:

不确定我是否理解您的问题...

这里有两个未命名的对象

struct Foo { int bar; double quux; }
(struct Foo){42, 3.14159}

(int)42

您可以通过指针使用它们

struct Foo *foo = &((struct Foo){42, 3.14159});
foo->quux = 2.71828;

int *fooi = &((int){42});
*fooi = -1;

您可以将它们用作函数参数

foofx((struct Foo){42, 3.14159});
foon((int){42});

https://ideone.com/ibhdYq https://ideone.com/XB1bkO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多