编程中经常错的地方(如果你的程序报错,却找不到,来这里看看)


1,      struct 结构体和union联合体,一定要加‘;’

例:

struct node{
   int num
};

,2,   如果使用if和while时,注意:

if(a=4);
{
    printf("大家好\n");
}
while(a=4);
{
    printf("大家好\n");
}


上面两个语法没问题,但逻辑有问题,if 和while使用时,不要习惯性地加‘;’

注意区分‘=’赋值和‘==’横等的区别

 

3,有时候可能会出现莫名其秒的段错误,这也是很头疼的;

   可能性1:越界:你定义了一个变量char a[10],只有10个字节,如果你给他赋值10个字节以上的内容,系统就会报段错误

 

  可能性2:野指针:你的指针没有初始化,也没明确指向一段内存,那系统会给他一个随机的地址。一旦你使用他,系统就会报错

 因为这段地址可能是系统不允许访问的地址

 

  可能性3:链表中:定义一个结构体指针,没有分配空间,那他还是个地址,

例:

struct node *p=NULL;
x = p->num ;          //这里就会报错,因为你没分配空间,*p只是一个结构体指针,是个地址,没有内存空间

 

4,注意while()和for(; ;)里面的控制是,满足条件才循环

n =7 ;                         for(int i=0;i>10;i++)
while(n<0)                     {
{
    n--;
}                               }

不要带自己感觉地去写,认为满足条件退出

 

5,变量在定义时,注意初始化。全局变量,还好,系统会默认为0或NULL。若是局部变量时,不给他赋值,系统自动给一个垃圾值。

 

6,调用函数时,不要返回局部变量的地址,因为局部变量的资源,在函数调用后,就会释放,所以得不到你想要的结果。

例:    

char * reserver_string()
{
       char str[] = "hello!";
       return str;
}
int main()
{
       reserver_string();
       return 0;
}

上可以程序,如果你编译,就会出现警告。如果你用一个char *temp;接收返回值,并打印*temp指向的内存,那你得到的将不会是“hello!”


 7,文件读写 :文件读写时,*fp会移动,所以要明白指针目前指向

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值