C 为什么我的程序在初始化指针时会崩溃?

C 为什么我的程序在初始化指针时会崩溃?,c,C,因此,我的程序运行numElements方法,但比崩溃,我是声明变量错误还是指针变量错误 标题.h typedef struct Node { int number; struct Node *pNext; }Node; 其他 void LinkedList(Node *pNode){ int i,j,c,numElem; time_t t; srand((unsigned) time(&t)); numElem = numElements(); pNode[numElem]; f

因此,我的程序运行numElements方法,但比崩溃,我是声明变量错误还是指针变量错误

标题.h

typedef struct Node {
int number;
struct Node *pNext;
}Node;
其他

void LinkedList(Node *pNode){

int i,j,c,numElem;
time_t t;
srand((unsigned) time(&t));
numElem = numElements();
pNode[numElem];

for(i = 0; i < numElem; i++){

    pNode[i].number = (rand() % (MAX - MIN)) + MIN;
    //c = (rand() % (MAX - MIN)) + MIN;
    printf("P is %d\n",pNode[i].number);
    printf("C = %d",c);

   }
}

我需要这个
pNode=malloc(numElem*sizeof(Node))

您需要为pNode分配内存,对于您的案例(C语言),它可能是

pNode = malloc( numElem * sizeof(Node) );

严格C不需要强制转换,但对于C++,它是.< /p>我需要先初始化为null吗?代码>?它没有。从未声明过

pNode
。我们需要查看整个函数。请阅读以下内容:.zwol,这取决于编译器。所以你的分类是错误的!例如,如果需要用C++编译,则要求使用CAST。我给我的答案加上C++!不,它不依赖于编译器。问题只与C有关。在C语言中,铸造malloc的结果是一种非常糟糕的做法,永远不应该被鼓励。只有当某人特别需要编译成C和C++的代码时,才应该包含该转换。这个问题只与C有关。这对你自己解决这个问题很好,但是你是否意识到你创建了一个数组,而不是一个链表?(也许你的意思是制作一个链表头数组?@zwol我正在制作一个链表,但开始的速度很慢though@zwol顺便问一下,使用realloc更好吗?realloc适用于已经分配了一块内存(由malloc分配)并且需要更改其大小的情况。
pNode = malloc( numElem * sizeof(Node) );