回 帖 发 新 帖 刷新版面

主题:一道 简单的C语言指针题,请教。。。

自定义函数为void swap(int p1,int p2)
{
    int temp;
    temp=p1;
    p1=p2;
    p2=temp;
}
而在主函数中调用时发生指针调用       
                                swap(*(p+i),*(p+j));
却不可以。
但如果自定义的函数是void swap(int *p1,int *p2)
{
    int temp;
    temp=*p1;
    *p1=*p2;
    *p2=temp;
}       则在主函数中可以发生指针调用。
我不大懂其中的原因,是不是因为函数的实参和形参类型要一致这个原因?

回复列表 (共5个回复)

沙发


类型肯定不匹配了

板凳

实参与形参是单向传递。这点很重要。形参的值不能返回实参

3 楼

C语言是传值的,形参只是把值传给实参!
函数调用时,形参和实参类型当然要一样啊!

4 楼

在函数定义的时候你没有“*”号啊,没有的话这只是两个普通形参变量啊,不是指针型变量。在两个形参变量前加“*”号,就可以了!!!

5 楼

类型不匹配

我来回复

您尚未登录,请登录后再回复。点此登录或注册