注册 登录
编程论坛 C语言论坛

一个简单的函数程序

xi2254601605 发布于 2018-02-25 14:07, 2134 次点击
只有本站会员才能查看附件,请 登录

不知道哪错了,照着打的
12 回复
#2
李晨经纪人2018-02-25 14:29
j和h没有初始化,而且swap在这里起不到作用的
#3
马尔代夫人2018-02-25 15:20
swap里的变量所占的内存当函数运行结束后就会被释放,所以根本无法将交换后的值返回给主函数,可以通过地址来交换两个变量的值。
#4
will丶2018-02-25 16:47
你这个函数写的,看的出你的函数调用,参数传递,参数类型都没搞懂
C语言中整型变量的形式参数传递的是值而不是地址,也就是形式参数实际上是复制了实际参数的值进入函数运算的,而被复制的实际参数的值并没有改变。
实参进行函数初始化,函数并没有访问调用传递的实参本身,因而也不会修改实参的值
程序代码:
#include<stdio.h>  
void swap(int *j, int *h)  //利用指针值交换实现
{  
    int d;  
    d=*j;  
    *j=*h;  
    *h=d;  
}  
int main()  
{  
    int j=1,h=2;  
    swap(&j,&h);  
    printf("j=%d,h=%d",j,h);  
    return 0;  
}
#5
Jeyyion_han2018-02-25 17:53
程序代码:
#include<stdio.h>  
void swap(int *j, int *h)  //利用指针值交换实现,不然实现不了数值的交换,你的j和h没有初始化
{  
    int d;  
    d=*j;  
    *j=*h;  
    *h=d;  
}  
int main()  
{  
    int j=1,h=2;  
    swap(&j,&h);  
    printf("j=%d,h=%d",j,h);  
    return 0;  
}
#6
Jeyyion_han2018-02-25 17:53
程序代码:
#include<stdio.h>  
void swap(int *j, int *h)  //利用指针值交换实现,不然实现不了数值的交换,你的j和h没有初始化
{  
    int d;  
    d=*j;  
    *j=*h;  
    *h=d;  
}  
int main()  
{  
    int j=1,h=2;  
    swap(&j,&h);  
    printf("j=%d,h=%d",j,h);  
    return 0;  
}
#7
xi22546016052018-02-26 14:22
回复 4楼 will丶
您能解释一下void swap(int *j, int *h)这一行我什么要加“*”吗?
#8
yanzy2018-02-26 14:31
回复 7楼 xi2254601605
形参你可以理解为复制的另一个东西,他们在函数内进行交换,但是原来的值没有改变。而传递地址的话,通过地址指向的值交换,则可以实现交换。你百度一下形参、实参、传值 这方面就懂了
#9
xi22546016052018-02-26 20:02
回复 8楼 yanzy
形参和实参我懂,问题就是void swap(int *j, int *h)这个“*”的作用是什么
#10
will丶2018-02-27 15:51
回复 7楼 xi2254601605
(*j)操作是这样一种运算,返回j的值作为地址的那个空间的取值。
指针了解一下
#11
Jeyyion_han2018-02-27 17:29
回复 9楼 xi2254601605
地址啊,就相当于门牌号,
#12
xi22546016052018-02-28 17:04
回复 2楼 李晨经纪人
如何使j和h在swap里起到作用
#13
xi22546016052018-02-28 17:05
回复 11楼 Jeyyion_han
您能帮我把这个函数重新编一片吗?不用指针,我还没学,谢谢
1