| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3313 人关注过本帖
标题:关于调用函数形参和实参的问题
取消只看楼主 加入收藏
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于调用函数形参和实参的问题
都知道实参和形参值传递的单向性,为什么在指针数组中,还可以通过改变形参的值就使得指针的指向发生改变了呢,附上程序。
#include<stdio.h>
#include<string.h>
int main()
{
    void sort(char *name[],int n);//函数声明,排序
    void print(char *name[],int n);//函数声明,输出字符串
    char *name[]={"Follow me","BASIC","Great Wall"};//定义一个指针数组,它的元素分别指向三个字符串的首字符地址
    int n=3;
    sort(name,n);
    print(name,n);
    return 0;
 }
 
 void sort(char *name[],int n)
 {
     char *temp;
     int i=0,j=i+1,k;
     for(;i<n-1;i++)
     {k=i;
     for(;j<n;j++)
     if(strcmp(name[k],name[j])>0)k=j;
     if(k!=i)
     {temp=name[i];name[i]=name[k];name[k]=temp;//就是这里,是怎么改变指向的,不是只能单向传递吗,这里改变指向对实参的影响是什么
     }
     }
}

void print(char *name[],int n)
{
    int i;
    for(i=0;i<n;i++)
    printf("%s\n",name[i]);
    return;
}
搜索更多相关主题的帖子: include return 字符串 元素 
2016-12-21 12:16
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
收藏
得分:0 
#include<stdio.h>
int main()
{
    void swap(int *,int *);
    int a=9,b=5,*pointer1,*pointer2;
    pointer1=&a;pointer2=&b;
    if(a>b)swap(pointer1,pointer2);
    printf("min=%d,max=%d",a,b);
    return 0;
}

void swap(int *p1,int *p2)
{
    int *temp;
    temp=p1;p1=p2;p2=temp;
    return;
 } 这个程序是不对的,这两个的区别是什么

[此贴子已经被作者于2016-12-21 12:25编辑过]

2016-12-21 12:23
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
收藏
得分:0 
回复 4楼 九转星河
那麻烦你看一下第一个程序,为什么第一个程序可以呢,这里面的区别是什么
2016-12-21 13:13
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
收藏
得分:0 
回复 3楼 lyl930130
关键是你看第一个程序。他改变的就是目录啊,并不是书的内容,我是看的谭浩强的c程序设计第四版,在书上第279页上说,name【i】和name【k】对换,就是把它们的指向互换,不是换的内容啊,如果对原目录是无影响的,那这个程序是怎么实现的呢?第一个程序和第二个程序不都是换指向吗,为什么第一个对,第二个不对我是能理解的,就是不理解为什么第一个程序是可以的,不知道哪里理解错了。
2016-12-21 13:59
快速回复:关于调用函数形参和实参的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018443 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved