变量与基本类型

本文介绍了C++编程的一些最佳实践,包括选择适当的类型,如使用无符号类型表示非负整数,使用double进行浮点运算。强调避免依赖于特定编译器或实现的行为,确保代码可移植性。此外,解释了引用的概念,它作为已有对象的别名,必须在定义时初始化。同时,讨论了指针的用法,指针是一个对象,可以改变其指向,但需注意类型匹配和初始化。建议始终初始化指针,以防止未定义行为。
摘要由CSDN通过智能技术生成

1、如何选择类型?

*当明确数值不可能为负时,选用无符号类型。

*使用int执行整数运算。在实际应用中,short常常显得太小而long一般和int有一样的尺寸。如果你的数值超过了int的表示范围,选用long long。

*在算术运算中不要使用char和bool,只有在存放字符或布尔值时才使用他们。类型char在一些机器上是有符号的,而在另一些机器上又是无符号的。所以如果使用char类型运算特别容易出现问题。如果需要使用一个不大的整数,可以明确指定它的类型是signed char或者unsigned char。

*执行浮点数运算选用double,这是因为float通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。

2、避免无法预知和依赖于实现环境的行为

某种参数只能在某一种编译器下运行,程序依赖于实现环境的行为。应该尽量避免此种程序。

3、名字的作用域

#include<iostream>
int main()
{
  int sum = 0;
//sum 用于存放从1到10的所有的和
for (int val=1;val<=10;++val)
      sum + = val;   // 等价于sum=sum+val
std::cout<<"Sum of 1 to 10 inclusive is"
         << sum << std::endl;
return 0;
}

 这段程序使用了命名空间std,该空间提供了2个名字cout和cin供程序使用。

全局作用域定义在main之外,块作用域在{ }内部。

4、引用

int ival=1024;

int &refval = ival;        //refval指向ival(是ival 的另一个名字)

int &refval2;            //报错引用必须初始化

引用即别名,一旦引用,就与初始值绑定

引用并非对象,相反的,它只是为一个已经存在的对象所起的另外一个名字。

定义了一个引用之后,对其进行的所有操作都是在与之绑定的对象上进行的:

refval=2;//把2赋给refval指向的对象

int ii = refval;//与ii=ival执行结果一样。

5、指针

指针与引用类似,指针也实现了对其他对象的间接访问。指针与引用相比有很多不同点。

1、指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。

2、指针无需在定义时赋初值。

定义:

int *ip1, *ip2; //  ip1和ip2都是指向int型对象的指针

double dp, *dp2;  //  dp2是指向double型对象的指针,dp是double型对象

获取对象的地址

指针存放某个对象的地址,要想获得该地址,需要使用取地址符(操作符&):

int ival =42;

int *p = &ival; //p存放变量ival的地址,或者说p是指向变量ival的指针。

double dval ;

double  *pd= & dval;          //正确:初始值是double型对象的地址

double  *pd2=pd;            //正确:初始值是指向double对象的指针

int  *pi= pd;                       //错误:指针pi的类型和pd的类型不匹配

pi  = &dval ;                   //错误:试图把double 型对象的地址赋给int型指针

指针值

指针的值(即地址)应属下列4种状态之一:

1、指向一个对象。

2、指向紧邻对象所占空间 的下一个位置。

3、空指针,意味着指针没有指向任何位置

4、无效指针,也就是上述情况之外的其他值。

利用指针访问对象

如果指针指向了一个对象,则允许解引用符(操作符*)来访问对象:

int  ival=42;

int *p =&ival ;  //p存放着变量ival的地址,或者说p是指向变量ival的指针

cout<<*p ;    //由符号*得到指针p所指的对象,输出42

建议:初始化所有指针

const 被设定为仅在文件内有效。当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的变量。

 而且不要显示的初始化变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值