这个不一定是10,在不同的机器上,即便是在同一台机器上不同时候的值是不一样的。
分析你的代码,执行完循环后i=10,而digit[10]是不存在的,因为你的数组长度是10,下标只能是0~9,即出现了数组下标越界,而c是不检查下标是否越界的,因此不同时候内存使用不同输出的值也不同。
应该这样写:
for(...)
{
...=0;
printf...;
}
循环体超出一句就要用大括号括住。
您原先那样写是错误的:循环将整个数组赋值0后,i执行自增操作后就为10了,那么*(digit
+
10)就会发生下标越界的错误(访问内存页权限异常),输出的10是随机值(好的情况下)。
这个函数的功能是利用一个循环变量从数组首元素开始,往上自加,a[i]和啊a[n-1-i]就是数组对应的首尾元素,然后交换内容,实现数组的逆序。谢谢采纳。
void fun(int a[],int n) { //注意参数是数组的首地址,操作会影响主函数的内容
int i,t;for(i=0;i
t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}// a0 a4.a1 a3.a2 a2相互对调数值
}
main()
{ int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5); // k=5 4 3 2 1 6 7 8 9 10。。 fun(k,x)是函数引用,这个函数有两个参数,int a[],n
int a[]就是数组a的第一个地址。
for(i=2;i<8;i++)
printf("%d",k[i]);
printf("\n");
}
每次运行后输出的数不确定吧,因为执行完后i=10,digit[10]没有被赋值,所以它的值是随机的,不确定的。
for(i
=
0;
i<10;
i++)
digit[i]
=
0;这个功能是把数组都赋为0