杂记1

  做笔记用,大家勿睬

  VS中关于scanf和gets等的安全问题

    vS2013中有很多函数的用法和书上讲述的不是特别一样,比如,scanf使用不了,要用scanf_s,还有的使用gets时,括号里面传参  时不光需要传入数组名,还需要传数组长 度,比如char arr[6];gets(arr,6);才可以正常的输入。原因是VS使用了更加安全的  run-time library routines.新的security CRT function(带有“_s”后缀的函数)。旧式的scanf在读取的时候会根据format指示  从缓冲区中读取直至结束,但是有些时候会format指示会有Bug,导致scanf读取了给定的缓冲区以外(数组越界)的数据。总之  带"_s"的是不带"_S"的安全版需要注意的是,scanf_s,gets_s等是微软公司提供的,并不是标准C语言的知识,所以建议大家不要使用

   解决办法

  1.更改预处理定义:

        项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,增加:

            _CRT_SECURE_NO_DEPRECATE

  2.打开VS的安装目录,一次打开文件夹VC->vcprojectitems,找到newc++file.cpp,右击以文本方式打开,在编辑页面输入#define _CRT_SECURE_NO_WARNINGS 1 ,以后每次新建一个项目的时候会自动生成该条语句

编码风格

  编写项目的时候,每写一个模块,边测试边写代码,尽量避免代码太多时候,检查哪个模块不方便

生成随机值

    srand():初始化随机数发生器  <stdlib.h>

     rand():随机数发生器    <stdlib.h>

     time():随机数   <time.h>

     具体的使用方式:在主函数中用srand((unsigned)time(NULL)),然后使用int a = rand()%10    产生0-10的随机数

(printf中的格式控制符)

   无符号的整型 %u  无符号的长整形%lu


(传址注意事项

    当传入一些地址(数组等),需要对地址内容进行改变,且需要返回首地址时,就另外定义一个新的临时变量,令其等于该地址,然后通过该临时     变量操作地址内容,同时原地址还不改变


(断言)

    每传入一个地址到一个函数中时,注意断言,assert(地址),防止传址错误


(开辟临时空间)

  1.每次使用molloc或者realloc时,注意使用if(!a){exit(0);}通过此方式防止开辟空间不成功。解释一下,int *a;a =      (int*)malloco(sizeof(int)),   如果开辟空间不成功,则a指向错误,所以!a为真,然后跳入if语句,就直接退出了。

  2.在数据结构中会经常使用删除一个节点的造作,每次我们删除一个节点的时候,注意使用free(a),把空间释放掉。


(对待一个具体问题的几点建议)

   1.遇到一个问题时,注意把问题化简成一个小问题,通过解决小问题再解决大问题。

   2.要联想到生活中的实例,比如我们逆置一个字符串的内容的时候,我们一般的做法是先把内容取出来,再反过来放进去,但是如果我们联想生活    中的实例的话,这就好比一队任排成一列,那我们生活中的做法只需要最前面一个和最后面一个调整位置,最前第二个和倒数第二个调整位置,以    此   类推,这样写程序是不是就会轻松很多。

   3.遇到一个问题时,使用上面的一点点小建议,然后多想其他算法。


(const)

   在定义一些变量或者一些变量的内容不允许修改的时候,适当的使用一些const。


(Sleep)

     Sleep(3000);

     程序运行到这一句的时候就会停3秒钟。


    

     

  

  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值