【发布时间】:2023-02-24 01:54:35
【问题描述】:
我读了很多关于 C 和数组衰减的主题,但我还不明白一个大问题。 “数组退化为指针”仅有的当它们被传递给另一个函数的广告参数或总是在声明时(these 情况除外)?所以这意味着,如果我对接受数组的函数执行相同的操作,但在 main 中,数组不会退化为指针?
【问题讨论】:
-
选择一种语言,C 或 C++。
-
任何时候你将数组用作指针,它都会衰减到一个指针(指向它的第一个元素)。这实际上包括索引数组的,因为对于任何数组(或指针)
a和索引i,表达式a[i]是确切地等于*(a + i)。 -
if I do the same stuff of a function which accepts an array我怀疑你可以在 C 中做到这一点而无需包装在struct中,但随后就变成了一个 moo 点。 -
C 中没有接受数组的函数。
-
例如,在 C++ 中,在类似
char a[] = "abcdefg"; auto b = a;的代码中,a将“衰减”到第二个语句中的指针。