C语言double 型数组转short

sinat_38089000 2017-07-24 07:51:59
举个例子如下,为什么程序无法运行。
#include "stdio.h"
#include "stdlib.h"

int main()
{
int i,j;
short *T;
double **X;
X = (double **)malloc( sizeof(double*) * 10000);
for(i=0;i<10000;i++)
{
for(j=0;j<2;j++)
{
X[i][j] = -0.003+0.2*(j+1);
}
}
T = (short *)malloc( sizeof(short) * 10000);
for(i=0;i<10000;i++)
{
T[i] = (short)(X[i][0]*3000);
}

for(i=0;i<10000;i++)
{
printf("%d", T[i]);
printf("\n");
}

free(X);
X=NULL;
free(T);
T=NULL;

return 0;

}
...全文
833 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_38089000 2017-07-25
  • 打赏
  • 举报
回复
已经解决了,举的这个例子有点问题,哈哈,不过还是谢谢你
自信男孩 2017-07-24
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "stdlib.h"

int main()
{
    int i,j;
    short *T;
    double **X;
    X = (double **)malloc( sizeof(double*) * 10000); 
    for(i=0;i<10000;i++)
    {
        X[i] = (double *)malloc(sizeof(double) * 2);    /*申请第二维的空间*/
        for(j=0;j<2;j++)
        {
            X[i][j] = -0.003+0.2*(j+1);
        }
    }
    T = (short *)malloc( sizeof(short) * 10000); 
    for(i=0;i<10000;i++)
    {
        T[i] = (short)(X[i][0]*3000);
    }

    for(i=0;i<10000;i++)
    {
        printf("%d", T[i]);
        printf("\n");
    }

    for(i=0;i<10000;i++)    /*释放注意循环释放,因为是循环申请的*/
        free(X[i]);
    free(X);
    X = NULL;
    free(T);
    T = NULL;

    return 0;
}
详见上面的代码

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧