此号已注销_kpsvyL
-- 我看错了---
-----哦哦我看错了现在正确了
----但是为什么输入里面不能写change?
-----还有为什么输入里面printf("numa=%d,numb=%d",a,b); a和b前面不用加&了?
A玛zealot
的确,新版本的编译器更聪明了
慕仰2365844
老师的风格就是这样,如果实在看不懂我建议先去看看指针相关的知识,然后回头看会更简单
qq_blockchain_0
操作不当呗
nick_slade
等号右边*a表示取出指针a指向的数据,这里tmp就是整数类型,所以不需要加。换言之,tmp表示整数类型,*a也表示整数类型。造成这样的疑惑是因为对于*a在不同位置理解含义不同导致的:*a处于函数参数位置时,仅表示这里函数传参需要一个指针类型的变量;当*a处于等号右边时表示取出指针a代表的实际变量值。
qq_鱼儿ai冒泡_0
return是返回值,看你自己的函数类型,void类型返回0,int类型返回你所需要的数值
慕慕1707072
vim下显示代码行号
木辛ms
main中定义的变量a,b是局部变量(我觉得,不一定对)
因为红
我不会,求大神给出代码
因为红
#include <stdio.h>
void swap(int *a, int *b); //交换两个数
#define size 10 //数组长度
int main()
{
int str[size];
int i, j;
//初始化数组为10 9 8 7 6 5 4 3 2 1
for (i = 0; i < size; i++)
{
str[i] = size - i;
}
//排序,从a[0]开始排,从小到大
for (i = 0; i < size; i++)
{
for (j = i + 1; j < size; j++)
{
if (str[i] > str[j])
{
swap(&str[i], &str[j]);
}
}
}
//将十个数输出
for (i = 0; i < size; i++)
printf("%d\n", str[i]);
return 0;
}
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
你可以自己修改定义中的size的值确定长度,或者在语句中加入scanf函数获取都可以的。
后会无期_
如果你不给a和b值,他们是未定义行为,他们会给你随机数
TheRedWolf
按功能来讲应该是输入10个数据存入数组内,另外scanf的返回值是表示输入参数的个数,无效的输入返回0
旋转的梧桐叶
多百度,百度这种问题都有解答的.要学会自己找答案哦.
levy_liang
因为change函数使用了void类型,void类型的有一个作用是无返回值的,表示该函数没有返回值,也就是说在change函数内部即使你把a和b的值互换了,但也只是对于这个函数本身,并不能影响到main函数的。
qq_愿时光安好_04050009
1/n 结果是int类型,所以除了当n=1时,1/1=1,其他情况1/2=0,1/3=0。。。所以永远无法满足sum<15这个条件。
anyingxunlin
合理。输出是change函数产生的,但是那个a b是change函数内部的变量,你也把它定义成c d,只是接收了最初定义的变量ab的值,并没有对之前定义的a b进行操作
慕田峪6556549
我用的也是CentOS,有一些命令可能不一样,你百度查查看就可以了。
qq__心若明月_04156166
那就不是交换了,可以用另外一块内存区域覆盖改变值
一条被晒干的咸鱼
因为函数参数的传递方式是单向值传递造成的。
调用 chang() 函数时,将实参 a 和 b 的值对应传递给形参 a 和 b,形参 a 和 b获得初值。当 chang() 函数执行结束,返回主函数时,形参 a和b 的内存空间被释放,即形参 a 和 b 不在存在。但是形参的值并没有传递给实参 a 和 b,所以实参 a 和 b 的值仍然是他们的初始值。
小雾3378873
是不是 和别的一起编译了啊
偷马诺
不连续
慕九州4949588
主函数中加入printf(“%d,%d”,x,y);会报错;你定义的x,y的作用域于只在change函数里面可以用;
如果你把这句话加入到change内部就可以用了;
待我强大给你天下
你有中间变量呀
qq_海边的沙泺_0
因为传入的是地址(引用),所以不需要返回值。地址没有变,是地址里面的值变了。
为爱逞能
是随机的,不一定是0
SANDYCLAIRE
qq_耿心了了_0
手机app可以,电脑貌似不行
熙小雅
解决了,没compile导致运行是之前代码结果
monster语文
csh_001