【发布时间】:2021-10-30 09:19:51
【问题描述】:
int * 是不是派生数据类型?
我感到困惑是因为我觉得这两个案例在这个问题上是矛盾的。
案例 1:
假设: int * 被视为派生数据类型。然后考虑下面给出的代码 -
void someRandomFunction()
{
int* a, b, c, d;
int e, f, g, h;
....
....
....
}
在这个函数中,如果我们需要将int *视为派生数据类型,那么就像e, f, g, h是int数据类型的变量一样,所有变量a, b, c, d必须是指向int数据类型的指针,对吧?
但由于只有a 是指向int 数据类型的指针,那么这是否反驳了我们对这种情况的假设?
案例 2:
假设:int *不被视为派生数据类型。然后考虑下面给出的代码 -
int* MyFunc()
{
int *p;
....
....
....
return p;
}
这里,int * 正在向编译器指示return's datatype,对吧?那么,这是否证明int * 是派生数据类型,即,这是否反驳了我们对这种情况的假设?
【问题讨论】:
-
派生数据类型是什么意思?
-
b,c,d,e,f,g,h 不是指向 int 的指针。例如,标识符“b”是对 int 变量地址的直接转换。而标识符“a”是对地址的直接转换,该地址将地址保存到 int 变量。细微的差别。
-
b的任何属性都不意味着int*是否是派生数据类型(无论您是什么意思),因为b根本不是int类型。你不能从不是 X 的对象中扣除关于 X 的任何属性。 -
我很难理解你的推理方式。当您推断“是的,它是派生数据类型”时,我几乎一直与您同在,但最后您失去了我。
-
这能回答你的问题吗? C and derived data types?
标签: c pointers types declaration