搜索
bottom↓
回复: 1

关于malloc函数

[复制链接]

出0入0汤圆

发表于 2011-5-22 21:01:18 | 显示全部楼层 |阅读模式
使用IAR EW430 4.21 应该可以用malloc函数吧 我利用链表存数之后,在VC6.0中显示可以存入,但是在IAR中编译就会有问题,显示是0 为什么呢? 程序如下:
# include "stdlib.h"
# include "io430.h"

struct Node
{
   int data;
   struct Node *pNext;
};

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  
    int a[256] = {301,283,276,263,254,242,236,230,218,212,
                  205,206,211,212,217,212,212,212,211,218,
                  218,218,218,224,218,224,218,218,217,217,
                  222,224,224,230,236,242,242,242,242,242,
                  239,236,230,230,230,236,240,248,248,248,
                  240,230,228,218,218,221,228,230,224,228,
                  230,230,230,230,228,230,230,234,230,224,
                  224,222,224,227,230,240,236,236,236,239,
                  240,239,236,236,240,240,239,236,236,242,
                  240,242,242,242,234,230,230,230,236,242,
                  239,240,242,257,277,300,325,343,347,348,
                  343,334,313,289,270,254,242,234,230,228,
                  230,224,224,222,224,230,224,228,230,224,
                  230,230,230,248,289,372,526,787,1165,1546,
                  1861,1954,1754,1398,930,424,76,-67,-90,-49,
                  4,  52, 82, 76, 70, 82, 102,117,117,123,
                  135,150,165,165,171,182,188,194,200,205,
                  215,227,230,246,260,271,283,283,289,295,
                  307,325,337,348,354,366,384,394,402,414,
                  420,431,443,455,467,467,461,455,443,442,
                  440,431,431,420,402,390,378,366,360,348,
                  337,313,295,283,270,257,246,234,224,224,
                  209,200,187,176,174,165,171,169,165,168,
                  165,165,171,171,171,171,175,182,182,181,
                  181,176,182,185,188,194,199,200,199,194,
                  200,208,206,206,212,211} ;
    int b[256] = {0} ;
    int i , j , k , m , n  ;
    n = 0 ;
    m = a[0] ;//第一个数据要另外保存
    b[0] = 125 ;//125作为判断的阈值
    //b[1] = a[1] - a[0] ;
    for (i = 1 ; i < 256 ; i++)
      b = a - a[i-1] ;//一阶差分保存在数组中
    for (j = 0 ; j < 256 ; j++)
    {
      if ( ( b[j] >= 125 ) || ( b[j] <= -125) )
      {
        n = n + 1 ;
      }
    };

/*以上程序运行无错误,可以得到正确个数的n值,下面要考虑如何存储n表示的较大的数
    已经确定用链表来做*/   
    struct Node *pHead , *p ,*q ;
    pHead = NULL ;
    q = NULL ;
    p = (struct Node *)malloc(sizeof(struct Node));//*p中存的是地址,利用结点变量的名字*p访问结点分量
/*以上建立了第一个节点,*p指向首地址,此时应该将b[0]存入其中*/
    p -> data = 3 ;  ///问题在这里,仿真时下载后,我在watch栏中输入p->data追踪值,结果显示是0,为什么呐?
   
    j = 255 ;
   
   
   /* for (k = 0 ,k < 256 ,k++)
    {
      if ( ( b[k] >= 125 ) || ( b[k] <= -125) )
      {
        p->data = b[k];
        p = p+1;
        
      }
    }*/
   
    return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-7-9 23:49:35 | 显示全部楼层
什么系列的?
int a[256]怎么不加个const啊?
是不是还没开始赋值啊?
到 j = 255 ;这句在看一下 p -> data

还有,编译的时候有警告吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-25 10:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表