vs2010 c++ 学习笔记


对于学习c++中出现的小问题做一些汇总记录,以便忘记,方便回顾查询:

1、error C2360: “pDL_LineData”的初始化操作由“case”标签跳过问题:

switch(type)
{
case 0:
 int i = 0;
 i++;
break;

case 1:
 int j = 0;
 j++;
break;
}
对于这种写法会报c2360错误,网上查到的原因是:这个case语句可能没有被执行到(执行其他case了)导致变量没有初始化而导致接下来的错误,所以需要把变量放到switch前面声明初始化。

解决办法:

1)将case内的代码使用{}括起来:

switch(type)
{
case 0:
{
 int i = 0;
 i++;
}
break;

case 1:
{
 int j = 0;
 j++;
}
break;
}

注:break可以在{}内外都可

2)将int i,和int j的定义提到switch()前边:

3)还一种观点是,定义是可以,但是是不能初始化,或准确点说是定义的同时不能初始化,case中的定义和初始化分开即可,如int i; i=0;以测试也是可以解决;

总结:上边三种方法都能解决,但具体什么还没有弄明白,有待确定,对于上边三种解决方法不知道会带来什么其他问题,未知。但是编译,运行正常。或许多虑!

2、对于new和delete功能:

1)new和delete是c++关键字

2)new在c++中用来内存分配,运行期内分配的位置在堆空间,鼓励new分配的空间delete释放,对于小程序可以不释放,由进程或程序结束时操作系统自动回收,但是并非是个好习惯,尽量做到二者成对出现使用,否则可能造成内存泄漏,有程序崩溃的潜在危险;

3)delete释放指针指向的内存,并非指针本事占有的内存,而delete后该指针还是指向原来被释放的内存区域,如果再次delete,由于已经释放,就会发生空间访问异常问题,所以最好养成delete后指针赋值为NULL的习惯。对这种情况,C++标准规定:delete空指针是合法的,没有副作用。

3、std::fixed

在文件流输出到text文件时,double类型会转变为字符型,当为非常小的小数时,往往会输出为科学计数方法的数据,有时是不希望的,通过std::fixed可以固定为非科学计数方法,同时可以通过file.precision()设置小数精度。

double num = 0.0000000000001;

file.precision(6);

file<<std::fixed<<num;

4、atan2(y,x)

反正切,参数顺序和习惯不太一样,返回值为弧度,范围为【-pi,+pi】。
















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值