请考虑以下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)缺少返回值,编译器将其报告为错误
(D)取消引用可能导致运行时错误的未初始化指针答案: (D)
解释:
当您调试循环1时,您将获得大小为4的链表
在第二个循环中,将打印0 0 1 1 2 2 3 3值,之后该磁头将指向某个随机位置并导致运行时错误。
正确选项(D)
这个问题的测验