问题遇到的现象和发生背景
为啥我这里用sizeof算ar的元素个数不对呢
问题相关代码,请勿粘贴截图
#include<stdio.h>
int max(int ar[]);
int main() {
int x;
x=max((int[]) {4,8,9,5,6,7,11,3});
printf("数组中的最大值是%d\n", x);
return 0;
}
int max(int *ar) {
int i=0, j=1;
printf("%d\n",sizeof(ar)/sizeof(*ar));
while (j<=sizeof(ar)/sizeof(ar)) {
if ((ar + i) < *(ar + j)) {
i = j;
}
j++;
}
return *(ar + i);
}
运行结果及报错内容
我的解答思路和尝试过的方法
这里稍微测试了一下,发现这个sizeof(ar)只有4的大小,估计是去计算sizeof(&ar[0])了。
想知道为啥这里会错,是因为这里使用了复合字面量没有真正创建一个数组么