【发布时间】:2019-06-15 15:24:03
【问题描述】:
之前的帖子已经描述了为什么数组名称不能递增。但.. 那么这两种不同的递增方式呢?
void f(int arr[]){
printf("%d\n",*arr++);
printf("%d\n",*arr);
}
int main(void){
int arr[3]={1,2,3};
f(arr);
// COMPILE BY COMMENTING THESE TWO LINES BELOW AND ADDING THEM
printf("%d\n",*arr++);
printf("%d\n",*arr);
}
我无法弄清楚为什么它在一种情况下有效,而在另一种情况下无效。欢迎任何建议/指导。
【问题讨论】:
-
你可以看到这个问题/答案stackoverflow.com/questions/16748150/…
-
@Max 不一样,与这里的问题无关。
-
@AnttiHaapala 我认为他与这个问题有关。
-
我理解编译器提供数组作为语法糖的概念。我要问的是,就数组的特性而言,这不是一致的行为。它是否记录在 C 语言规范的任何地方?如果不是,那么它是一个错误吗?应该举报吗?