| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:指针数组问题
只看楼主 加入收藏
daming1
Rank: 1
来 自:开平
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-11-26
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
指针数组问题
#include <stdio.h>
#include <string.h>
int main()
{void sort(char *name[ ],int n);
  void print(char *name[ ],int n);
  char *name[ ]={"Follow","Great", "FORTRAN","Computer"};
  int n=4;
  sort(name,n);  
  print(name,n);
  return 0;
}
void sort(char *name[ ],int n)
{char *temp;  int i,j,k;
  for (i=0;i<n-1;i++)
  { k=i;
     for (j=i+1;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]);
}




temp=name[i]; name[i]=name[k];这不是不行的吗?就像
#include <stdio.h>
int main()
 {void swap(int *p1,int *p2);
  int a,b;  int*pointer_1,*pointer_2;
  scanf("%d,%d",&a,&b);
  pointer_1=&a;  pointer_2=&b;
  if (a<b)  swap(pointer_1,pointer_2);
  printf("max=%d,min=%d\n",a,b);
  return 0;
 }
void swap(int *p1,int *p2)
{ int *p;
   p=p1; p1=p2; p2=p;
}
这是不行的。
为什么那个temp=name[i]; name[i]=name[k];又行啊??
搜索更多相关主题的帖子: return include 
2011-12-14 09:18
吴小杰
Rank: 3Rank: 3
来 自:。。。。。。
等 级:论坛游侠
帖 子:58
专家分:107
注 册:2011-11-11
收藏
得分:5 
int *p;
    p=p1; p1=p2; p2=p
这个是单向的值传递,不能通过调用函数改变实参指针变量的值,但可以改变实参指针变量所指向的值
temp=name[i]; name[i]=name[k];name[k]=temp
这个。。。。 name[i]相当于*(name+k)
*(name+i)=*(name+k)

temp=name[i]; 对于字符型指针temp是把name[i]的第一个字符的地址给
2011-12-14 11:10
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:3 
temp=name[i]; name[i]=name[k];这是换地址,name[i]中装的是地址,形参也是地址传递,所以可以那样改变!

最基础的往往是你最容易忽略的!
2011-12-14 12:22
sala0127
Rank: 2
等 级:论坛游民
帖 子:56
专家分:52
注 册:2011-11-8
收藏
得分:2 
回复 楼主 daming1
两个程序都是改变指针的值,就是改变指针的指向对象。第一个程序输出时用的是指针,所以可以输出正确的结果。第二个程序a,b的值没有改变,只是p1p2的指向改变了,输出时用的不是指针,所以没能输出想要的结果,输出时改成用*p1,*p2就可以输出想要的结果
2011-12-14 12:40
daming1
Rank: 1
来 自:开平
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-11-26
收藏
得分:0 
回复 sala0127
不要说输出时改成用*p1,*p2,就算是输出时改成用*pointer_1,*pointer_2也不行啊。。。。。。
2011-12-14 16:40
华夏吾爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2011-12-14
收藏
得分:0 
temp要初始为指向一个有确定长度的数组。
2011-12-14 16:52
daming1
Rank: 1
来 自:开平
等 级:新手上路
帖 子:21
专家分:0
注 册:2011-11-26
收藏
得分:0 
还是不明白啊
2011-12-14 22:15
快速回复:指针数组问题
数据加载中...
 
   



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

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