void函数问题
#include < stdio.h >void main( )
{
void chang(int a[], int n);
int a ={1, 2, 3, 4, 5};
int i;
for(i = 0; i < 5; i++)
{
printf("%d,", a);
}
printf("\n");
chang(a, 5);
for(i = 0; i < 5; i++)
{
printf("%d\n", a);
}
printf("\n");
}
void chang(int a[], int n)
{
int m, t, i;
m = (n - 1) / 2;
for(i = 0; i < m; i++)
{
t = a;
a = a;
a = t;
}
}
明明是void,为什么会把a数组的值返回到main函数中呀????
为了方便定位,重新整理一下代码
#include < stdio.h >
void main( )
{
void chang(int a[], int n);
int a ={1, 2, 3, 4, 5};
int i;
for(i = 0; i < 5; i++)
{
printf("%d,", a);
}
printf("\n");
chang(a, 5);
for(i = 0; i < 5; i++)
{
printf("%d\n", a);
}
printf("\n");
}
void chang(int a[], int n)
{
int m, t, i;
m = (n - 1) / 2;
for(i = 0; i < m; i++)
{
t = a;
a = a;
a = t;
}
}
a是一个数组,你的第一个for函数就输出错了,他只能输出5次a的首地址,i在这里没有任何意义.
你的思路大概是把a改成a,改了之后输出1, 2, 3, 4, 5.事实上还是有错误的.void chang(int a[], int n),这个函数中不是指针,却直接把一个地址赋给了它.程序好多错误的说...
谓我心忧 发表于 2014-3-25 22:31 static/image/common/back.gif
为了方便定位,重新整理一下代码
a是一个数组,你的第一个for函数就输出错了,他只能输出5次a的首地址,i在这 ...
我知道了,是后面的函数改变了a指针地址,所以即使是空函数也照样能达到效果,没你说的那么纠结。 指针的话用函数也可以改变的啊 啥话不说,先顶一下先!{:2_25:} 对指针的操作就是对内存的操作 水墨君 发表于 2014-3-27 11:49 static/image/common/back.gif
对指针的操作就是对内存的操作
恩,谢谢点播 {:1_1:} {:1_1:} 好久没上了
页:
[1]