| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1219 人关注过本帖
标题:关于指针与系统内存冲突的问题
只看楼主 加入收藏
as574301858
Rank: 2
来 自:成都
等 级:论坛游民
帖 子:14
专家分:28
注 册:2012-3-16
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:20 
关于指针与系统内存冲突的问题
我写了一个有关指针的程序,是对输入的五个数字进行排序,我用的是选择排序法,但是我一旦用指针表示数组的话,运行时老是出错,就是说我内存分配有[来源:]问题,这是怎么一回事啊,该怎么弄呢?
#include<stdio.h>
void select(int *k,int n);
void main()
{
int a[5];
int i;
printf("input 5 numbers:");
for(i=0;i<5;i++)
scanf("%d",a[i]);
select(a,5);
for(i=0;i<5;i++)
    printf("%d ",a+i);
getchar();
}

void select(int *k,int n)
{
int x,y,t,min;
for(x=0;x<n;x++)
{
min=x;
for(y=x+1;y<n;y++)
if(*(k+min)>*(k+y))
min=y;
if(x!=min)
{
t=*(k+min),*(k+min)=k[x],*(k+min)=t;
}
}
}

搜索更多相关主题的帖子: include numbers 
2012-07-20 19:59
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:4 
scanf("%d",a[i]);这句话看看有没有问题

t=*(k+min),*(k+min)=k[x],*(k+min)=t;如果是交换的话,你看看这里有没有问题
2012-07-20 20:33
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:6 
#include<stdio.h>
void select(int *k,int n);
void main()
{
    int a[5];
    int i;
    printf("input 5 numbers:");
    for(i=0;i<5;i++)
        scanf("%d",&a[i]);
    select(a,5);
    for(i=0;i<5;i++)
        printf("%d ",*(a+i));
    getchar();
}

void select(int *k,int n)
{
    int x,y,t,min;
    for(x=0;x<n-1;x++)
    {
        min=x;
        for(y=x+1;y<n;y++)
        {
            if(*(k+min)>*(k+y))
                min=y;
            if(x!=min)
            {
                t=*(k+min);
                *(k+min)=k[x];
                k[x]=t;
            }
            continue;
        }
    }
}
你太粗心了,在指针的应用上也不是很成熟,多练习一下吧,帮你改了一下,你可以做个参考!
2012-07-20 21:16
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:0 
膜拜下楼上两位大牛, 楼主对C还不是很熟悉啊

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-20 22:14
as574301858
Rank: 2
来 自:成都
等 级:论坛游民
帖 子:14
专家分:28
注 册:2012-3-16
收藏
得分:0 
又写了一个还是遇到同样的问题,这次没有粗心了。。(我想解决的是为什么运行程序时输完第一个字符串按下回车,这个程序就出问题了,windows把它关了说内存问题)
void main()
{
    int *a[3];
    int i;
    for(i=0;i<3;i++)
        scanf("%s",a[i]);
    for(i=0;i<3;i++)
        printf("%s\n",a[i]);
    getchar();
}
2012-07-21 21:01
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
    int *a[3];
    int i;
    for(i=0;i<3;i++)
        scanf("%s",a[i]);

关于这个问题 谭浩强的书上有讲 需要我报给你书的版本和页码么
2012-07-21 21:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
连基本概念都没弄懂,就急着写程序。
你给我解释一下写出int *a[3];这句话的时候,心里想的那是什么?

授人以渔,不授人以鱼。
2012-07-21 21:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
别说了 看书罢 如果你看的是谭浩强第三版 看258页中间的内容 讲的就是这个问题 我看过第二版 也有这个内容 第三版这个内容的章节是 10.4.3 序号(4)

经常有人说谭浩强的书有多垃圾 多少错误 可是 要是一个人真能把谭浩强的书通读 都不用看透 就能写出至少无错的程序 这不就是入门的要求么
2012-07-21 21:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
花一天的时间,专门把指针的各种性能和用法测试一遍,好过无数次地变换着形式探究同样的问题。

授人以渔,不授人以鱼。
2012-07-21 21:10
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
花发帖的功夫再看一遍书也好啊
2012-07-21 21:11
快速回复:关于指针与系统内存冲突的问题
数据加载中...
 
   



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

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