C语言杂记

+## printf:行缓冲:满一行输出
① ‘\n’ ② scanf
eg:printf(”hello world“);//hello world 不输出
while(1);
加 换行符 或者后面有 scanf() (共用缓冲区,scanf()前会将里面的显示清空)
printf 特殊使用:\033 控制码
可控颜色,背景色,闪烁。。。

scanf:缓冲区\n问题,清理垃圾

eg:printf(”input a: \n“);
scanf ("%d",&a);
printf (“input char b: \n”);
scanf ("%c",&b);
当输入1时,其实在缓冲区输入的是 1\n;a是int型拿走了1,但是缓冲区剩下了\n,b是字符型,拿走了\n。所以会导致输入一次程序就结束了。如果b是非char型就不会,应为其他的类型接收不了\n;

switch-case

	最后加上default:没有匹配到的就进入
	编码规范

右左法则:在函数参数中传入i++,++i;只要记住i++,就是将当时i的值传入,++i就是在那先写个i等所有参数运算结束后,将i的值传入

野指针

首先了解:#define NULL (void*)0 :零地址:不能赋值,不能操作
类型一、指针定义没有初始化(在4.0版本以下容易出现问题,4.0以上已优化)
4.0以下,会分配一个垃圾值给ptr;
4.0以上,会初始化为NULL;
其中导致的问题:内存泄露(4.0以下出现,4.0以上会报段错误)
主要原因在于这个垃圾值有可能是一个已经定义了的变量地址,如果出现这种情况,会出先无法预计的问题
类型二、指针由malloc申请了内存空间,在free释放时,ptr没有置空
导致空间释放了但指针变量仍指向该空间,如果再次使用该指针会遇到问题
避免野指针:养成良好的编程习惯:1、指针没有明确指向时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值