我知道这可能是一个常见的问题,但我已经尝试过搜索,仍然找不到清晰的答案。
我有以下代码:
int* f() {
int a[] = {1,2,3};
return a;
}
int main() {
int a[] = f(); // Error here
getch();
return 0;
}
这段代码会产生错误信息:"无法将'int *'转换为'int []'
"
我觉得这很奇怪,因为我读过指针和数组是相似的。例如,我们可以使用a[i]代替*(a + i)。 有人能给我一个清晰的解释吗?
*(a + sizeof(a[0])*i)
。但我不确定这种写法是否适用于所有情况。 - Vinicius Kamakuraa
的类型不完整或者是void*
类型。 - Alexander Gesslerchar
以外的类型,该身份仍然是正确的;您没有考虑指针算术运算的工作方式。 - Matteo Italiavector
返回值。 - Neil G