回 帖 发 新 帖 刷新版面

主题:2维指针问题

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void swap(int **p,int n)
{
int i,j,*t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(**(p+i)>**(p+j))                  
{t=*(p+j);*(p+j)=*(p+i);*(p+i)=t;}     //这里有问题 
}
}
void main()
{
int num[20],i,n,*pt[20],**p;
printf("Input the n:");
scanf("%d",&n);
for(i=0;i<n;i++)pt[i]=&num[i];
p=pt;
printf("The series numbers:\n");
srand(time(NULL));
for(i=0;i<n;i++)num[i]=rand()%100;
for(i=0;i<n;i++)printf("%d  ",num[i]);
printf("\n");
swap(p,n);
for(i=0;i<n;i++)printf("%d  ",num[i]);
system("pause");
}



就是个简单的数字排序问题   让使用二维指针    在vc6.0中可以运行,但在输出的结果不对
难道只是交换地址还不行??求教!!

回复列表 (共3个回复)

沙发

是不是最后的输出应该是printf("%d",*pt[i])啊

板凳

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void swap(int **p,int n)
{
    int i,j,*t;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
            if(**(p+i)>**(p+j))                  
            {t=*(p+j);*(p+j)=*(p+i);*(p+i)=t;}     //这里有问题 
    }
}
void main()
{
    int num[20],i,n,*pt[20],**p;
    printf("Input the n:");
    scanf("%d",&n);
    for(i=0;i<n;i++)pt[i]=&num[i];
    p=pt;
    printf("The series numbers:\n");
    srand(time(NULL));
    for(i=0;i<n;i++)num[i]=rand()%100;
    for(i=0;i<n;i++)printf("%d  ",*pt[i]);
    printf("\n");
    swap(p,n);
    for(i=0;i<n;i++)printf("%d  ",**(pt+i));
    system("pause");
}

3 楼

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void swap(int **p,int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
            if(*(*p+i)>*(*p+j)) //*(*p+i)这个才是里面的数值表示                 
            {t=*(*p+j);*(*p+j)=*(*p+i);*(*p+i)=t;}  // 以为参数是指针所以可以直接交换数据 
    }
}
void main()
{
    int num[20],i,n,*pt[20],**p;
    printf("Input the n:");
    scanf("%d",&n);
    for(i=0;i<n;i++)pt[i]=&num[i];
    p=pt;
    printf("The series numbers:\n");
    srand(time(NULL));
    for(i=0;i<n;i++)num[i]=rand()%100;
    for(i=0;i<n;i++)printf("%d  ",num[i]);
    printf("\n");
    swap(p,n);
    for(i=0;i<n;i++)printf("%d  ",num[i]);
    system("pause");
}

我来回复

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