| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1147 人关注过本帖
标题:指向指针的指针
只看楼主 加入收藏
naixin
Rank: 2
等 级:论坛游民
帖 子:16
专家分:26
注 册:2013-10-5
收藏
得分:2 
#include"stdio.h"
void chooserank(int *p)
{
    int i,j,t,k;
    int *pt;//这里可以去掉,有点多余
    for(i=0;i<10;i++)//修改
    {
        k=i;
        for(j=i+1;j<10;j++)
        {
            if(*(p+j)<*(p+k))//修改pt,把下面所有的pt改为p
            {
                k=j;
            }
            
        }//把if语句放在for语句外面,k找到最大值后才开始交换,放在里面只要找到一个比他大的就交换
        if(k!=i)
            {
                t=*(p+i);
                *(p+i)=*(p+k);
                *(p+k)=t;
            }
    }
    for(i=0;i<10;i++)
    {
        printf("%d ",*(p+i));//这里加一个空格,避免输出的数字连成一个整体
    }
}
int main()
{
    int str[100];
    int i;
    for(i=0;i<10;i++)
        scanf("%d",&str[i]);
    chooserank(str);
    return 0;
}这样懂了吗
2013-12-16 09:03
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:1 
指向指针的指针。。。二级指针。。。

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2013-12-16 09:44
w716169470
Rank: 2
等 级:论坛游民
帖 子:51
专家分:25
注 册:2013-4-18
收藏
得分:1 
指针式用来存储变脸地址的,那么指针本身也有地址,用来存储指针地址的指针就叫做二级指针。
2013-12-16 11:24
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
收藏
得分:2 
把指向指针的指针当成一个类型变量,例如int *p是一个指向整形的指针,指向指针的指针就好比 (变量类型*) *p;指向整形指针的指针 变量类型 就填int,其它类型可以以此类推。void chooserank(int *p)的p,楼主再推敲推敲。

好好学习,天天想上
2013-12-16 11:37
qq1274371820
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2013-11-24
收藏
得分:0 
回复 11楼 naixin


            嗯,懂了。。。但是
                                      二级指针呢?

自定义人生。。。
2013-12-16 21:46
naixin
Rank: 2
等 级:论坛游民
帖 子:16
专家分:26
注 册:2013-10-5
收藏
得分:1 
回复 15楼 qq1274371820
当指针所指的变量又是一个指针变量时,称该指针为二级指针,例如
int x,*p,**p2;//定义了一个二级指针p2
p1=&x;//p1指向x
p2=&p;//p2指向p1
2013-12-16 22:24
qq1274371820
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2013-11-24
收藏
得分:0 


        好吧,我这样写,大家看看红色的错在了那里

#include"stdio.h"
void chooserank(int *p)
{
    int i,j,t,k;
    int **pt;
    for(i=0;i<10;i++)
    {
        k=i;
        for(j=i+1;j<10;j++)
        {
            if(*(p+j)<*(p+k))
            {
                k=j;
            }
        }
        if(k!=i)
        {
                t=*(p+i);
                *(p+i)=*(p+k);
                *(p+k)=t;
        }
    }
    for(i=0;i<10;i++)
    {
        printf("%d   ",*p);
        p++;
    }
    printf("\n");
    for(i=0;i<10;i++)
    {
        pt=&p+i;
        printf("%d   ",**pt);
        pt++;
    }

}
int main()
{
    int a[]={12,34,56,90,78,0,4,1,3,2};
    chooserank(a);
    printf("\n");
    return 0;
}

自定义人生。。。
2013-12-16 22:29
华子hear
Rank: 3Rank: 3
来 自:陕西西安
等 级:论坛游侠
帖 子:57
专家分:104
注 册:2013-6-3
收藏
得分:1 
pt 是干嘛用的  都没有初始化。指向指针的指针应该是二级指针吧 **p   你这个没用到唉!
2013-12-16 22:40
qq1274371820
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2013-11-24
收藏
得分:0 
回复 18楼 华子hear


        就是二级指针啊,不对吗?

自定义人生。。。
2013-12-16 23:03
qq1274371820
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2013-11-24
收藏
得分:0 
回复 18楼 华子hear


             也,我没有定义       **p,而是      **pt           
                   有什么关系?                 

自定义人生。。。
2013-12-16 23:06
快速回复:指向指针的指针
数据加载中...
 
   



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

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