免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kevinmars520
打印 上一主题 下一主题

一个不太明白的指针问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-10-13 14:23 |只看该作者
原帖由 alexhappy 于 2008-10-13 14:09 发表
char *tmp;
tmp = *(x+i);
*(x+i) = *(x+j);
*(x+j) = tmp;

即可。。。





#include "stdio.h"
#include "string.h"
#define N 5

void sort(char *x[], int n)
{
  int i,j;
  char *t;

  for(i=0;i<n-1;i++)
  {
    for(j=n-1;j>i;j--)
     {

        if(strcmp(*(x+i),*(x+j)) < 0)
         {

           *t=*(x+i);
           *(x+i)=*(x+j);
           *(x+j)=*t;
         }

     }
  }

}

void main()
{
int i;
char *a[N]={"bc","ca","d","ea","ac"};
printf("S:\n");
for(i=0;i<5;i++)
  printf("%-4s",*(a+i));

printf("\n\n");


sort(a,N);
printf("D:\n");
for(i=0;i<5;i++)
  printf("%-4s",*(a+i));

printf("\n\n");

}


还是一样有错误

论坛徽章:
0
12 [报告]
发表于 2008-10-13 14:25 |只看该作者
拜托,你看清楚一点。。。。

论坛徽章:
0
13 [报告]
发表于 2008-10-13 14:29 |只看该作者
#include "stdio.h"
void swap(int *x,int *y)
{
  int *t;

  *t=*x;
    *x=*y;
      *y=*t;
  
}

void main()
{
  int a=1,b=2;
  swap(&a,&b);
  printf("a=%d b=%d\n",a,b);
}


请高手指点一下这个错误的主要原因.小弟一直对这向个问题不明白.感谢了.

论坛徽章:
0
14 [报告]
发表于 2008-10-13 14:32 |只看该作者
原帖由 alexhappy 于 2008-10-13 14:25 发表
拜托,你看清楚一点。。。。




这段上问题我以明白了.感谢了.刚学指针方面的问题有点模糊.谢谢了.

论坛徽章:
0
15 [报告]
发表于 2008-10-13 14:36 |只看该作者
  int *t;

&nbsp;&nbsp;*t=*x;
&nbsp;&nbsp;&nbsp;&nbsp;*x=*y;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*y=*t;


这里指针根本就没有初始化嘛,直接使用肯定要出问题,改成:
  int t;

&nbsp;&nbsp;t=*x;
&nbsp;&nbsp;&nbsp;&nbsp;*x=*y;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*y=t;

论坛徽章:
0
16 [报告]
发表于 2008-10-13 14:40 |只看该作者
因为用指针做参数传递给函数的话是可以改变指针指向的内容的,但是却不能改变指针本身的内容,所以,如果你这样:
void func(char *a,char *b){
       char *tmp;
       tmp = a;
       a = b;
       b = tmp;
}

函数完了之后其实做为实参传进来的两个指针并没有改变!
要想改变a和b可以这样:
void func(char **a,char **b){
      char *tmp;
      tmp = *a;//这里不能写成 *tmp = *a ;下同
      *a = *b;
      *b = tmp;//这里不能写成*b = *tmp;
}

这样就可改变a和b的内容了

论坛徽章:
0
17 [报告]
发表于 2008-10-13 14:49 |只看该作者
基本上有些明白了.

谢谢   alexhappy
也感谢上面其它各位.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP