疑问,关于后缀名

#include<stdio.h>
#include<malloc.h>
typedef struct stu_tag{
        int  b;
        struct stu_tag  *next;
}student;


void main(){ 
		
        int n=8;
		int i;
		scanf("%d",&n);
		student *head = (student *) malloc(sizeof(student));
        student *p1=head;
        student *p2;

        for(i=0;i<n;++i){
                p1->b = i;
                p2=(student *) malloc(sizeof(student));
                p1->next = p2;
                p1=p2;
                p2=p2->next;
        }
        for(i=0;i<n;++i){
                printf("%d ",head->b);
                head=head->next;
        }
}



以上是我随意写的一个程序,大家觉得会成功运行吗?(假如用vc6.0或者vs2005的编译器)

我的话,单单从代码来看,不会有大的问题,当然,先不管动态空间申请是否成功的验证!

但是结果是这样的:当后缀名是C时,编译出错,后缀名为cpp时,编译通过!

更让我不解的是:如果将scanf语句下的三个结构体变量的声明或者初始化,放到scanf语句之前的话,则无论后缀名是什么都能编译通过!代码如下:


#include<stdio.h>
#include<malloc.h>
typedef struct stu_tag{
        int  b;
        struct stu_tag  *next;
}student;


void main(){ 
		
		student *head = (student *) malloc(sizeof(student));
        student *p1=head;
        student *p2;
		
        int n=8;
		int i;
		scanf("%d",&n);

        for(i=0;i<n;++i){
                p1->b = i;
                p2=(student *) malloc(sizeof(student));
                p1->next = p2;
                p1=p2;
                p2=p2->next;
        }
        for(i=0;i<n;++i){
                printf("%d ",head->b);
                head=head->next;
        }
}

甚是不解,小弟在这里默默等候!求解!!!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值