| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:关于值传递的一个问题
取消只看楼主 加入收藏
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:1 
关于值传递的一个问题
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void sortString(char *p[],int n);

void
main(void)
{
    int i = 0;
    char *name[] = {"Pascal","Basic","C","FORTRAN","Computer design"};
    sortString(name,5);
    for(i = 0;i < 5;i++)
        printf("%s\n",name[i]);

}

void
sortString(char *p[],int n)
{
    char *tmp = NULL;
    int i = 0,j = 0;
    for(i = 0;i < n - 1;i++)
    {
         for(j = i + 1;j < n;j++)
         {
             if(strcmp(p[i],p[j]) > 0)
             {
                 tmp = p[i];
                 p[i] = p[j];
                 p[j] = tmp;
             }
         }
    }
}

调用上面的函数是不是说p和name共用相同的地址,直接改变指针数组p里面元素的指向,而不是交换内存里的内容,函数调用完不是释放掉了么,为什么可以影响name[],求教
搜索更多相关主题的帖子: color 
2014-09-26 14:04
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

void swap(int *a,int *b);

void
main(void)
{
    int *a = (int *)malloc(4);
    int *b = (int *)malloc(4);
    printf("a = ");
    scanf("%d",a);
    printf("b = ");
    scanf("%d",b);
    swap(a,b);
    printf("a = %d,b = %d\n",*a,*b);
}

void
swap(int *a,int *b)
{
    int *tmp = a;
    a = b;
    b = tmp;
}
}


我再附加一个例子哦,这个应该原理跟上面的是一样的,可是没能实现数据转换
但是如果函数里面这么写
    int tmp = *a;
    *a = *b;
    *b = tmp;
就可以,所以感觉很迷惑
2014-09-27 11:51
快速回复:关于值传递的一个问题
数据加载中...
 
   



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

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