zhangyunjnj 发表于 2011-5-22 21:01:18

关于malloc函数

使用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 = {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 = {0} ;
    int i , j , k , m , n;
    n = 0 ;
    m = a ;//第一个数据要另外保存
    b = 125 ;//125作为判断的阈值
    //b = a - a ;
    for (i = 1 ; i < 256 ; i++)
      b = a - a ;//一阶差分保存在数组中
    for (j = 0 ; j < 256 ; j++)
    {
      if ( ( b >= 125 ) || ( b <= -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存入其中*/
    p -> data = 3 ;///问题在这里,仿真时下载后,我在watch栏中输入p->data追踪值,结果显示是0,为什么呐?
   
    j = 255 ;
   
   
   /* for (k = 0 ,k < 256 ,k++)
    {
      if ( ( b >= 125 ) || ( b <= -125) )
      {
      p->data = b;
      p = p+1;
      
      }
    }*/
   
    return 0;
}

lch922 发表于 2011-7-9 23:49:35

什么系列的?
int a怎么不加个const啊?
是不是还没开始赋值啊?
到 j = 255 ;这句在看一下 p -> data

还有,编译的时候有警告吗?
页: [1]
查看完整版本: 关于malloc函数