📜  门| GATE CS 2021 |设置 2 |第 45 题

📅  最后修改于: 2021-09-27 05:29:52             🧑  作者: Mango

考虑以下 ANSI C 程序:

#include 
#include 
struct Node{
        int value;
        struct Node *next;};
int main( ) {
    struct Node *boxE, *head, *boxN; int index=0;
    boxE=head= (struct Node *) malloc(sizeof(struct Node));
    head → value = index;
    for (index =1; index<=3; index++){
        boxN = (struct Node *) malloc (sizeof(struct Node));
        boxE → next = boxN;
        boxN → value = index;
        boxE = boxN; }
for (index=0; index<=3; index++) {
    printf(“Value at index %d is %d\n”, index, head → value);
    head = head → next;
    printf(“Value at index %d is %d\n”, index+1, head → value); } } 

下列关于该计划的说法中,哪一项是正确的?
(A)执行时,程序创建一个包含五个节点的链表
(B)在执行时,程序进入无限循环
(C)它有一个缺失的 return 会被编译器报告为错误
(D)它取消引用可能导致运行时错误的未初始化指针答案: (D)
解释:

当您调试循环 1 时,您将获得大小为 4 的链表

在第二个循环中,值将打印 0 0 1 1 2 2 3 3 之后该头将指向某个随机位置并导致运行时错误。
正确选项 (D)

这个问题的测验