注册 登录
编程论坛 C++教室

一段小程序可通过编译器,就是不能运行,谁能解答?

yxb0001 发布于 2009-09-24 20:12, 513 次点击
#include<iostream.h>
#include<stdlib.h>

int a[20]={2,0,6,23,41,0,5,6,0,99,33,22,0,12,67,0,9,3,6,23};
int b[20]={1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,1,1};
int *p,i,j=0,*m,*nn;
int **y;
int k;

int main()
{
    y = (int **)calloc(20,sizeof(int *));
    nn=(int *)calloc(20,sizeof(int));

    p=&a[0];
    *m=b[0];
     
    for(i=0;i<20;i++)
    {
        if(*(p+i)!=0)
        {
            *(y+j)=p+i;
            
            cout<<**(y+j)<<" ";

            j++;
        }
    }
    cout<<"\n";
   
    k=0;
    for(i=0;i<20;i++)
    {
        if(k<j)
        {
            
            if((p+i)==*(y+k))
            {
                if(**(y+k)>=**(y+k-1))
                {
                   *(nn+i)=**(y+k);
                }
                else *(nn+i)=*(m+i);
                cout<<*(nn+i)<<" ";
                k++;
            }
        
        }
        
    }
   
    return 0;
}

不知何原因红色处就是不能赋值,为什么?

[ 本帖最后由 yxb0001 于 2009-9-25 09:22 编辑 ]
4 回复
#2
f23782009-09-24 22:27
我运行了一下, *m=b[0];指针m没有初始化,红色部分好像没问题
#3
yxb00012009-09-25 09:32
*m=b[0];指针m初始化
#4
yxb00012009-09-26 01:58
此程序的结果可以增加一个逆循环而获得,但上述的程序为什么行不通呢?
#5
yxb00012009-09-29 13:27
k=1
1