c++基本寻址和变量声明,觉得挺好的就分享出来!

ddressing内存
这节课构建直接在材料部分“第一次看变量”。
在前面的课变量,我们谈到了事实,变量名称一块内存,可以用来存储信息。简要回顾一下,电脑随机存取存储器(RAM),可在程序使用。当一个变量声明,一块内存留出该变量。

内存的最小单位是二进制数字(RAM),它可以保存的值为0或1。你能想到的有点像一个传统的光开关——要么off(0),或on(1),没有中间。如果你想看看一个顺序块内存,你将看到的是…011010100101010…或一些组合。记忆分为个人部分称为地址。也许令人惊讶的是,在现代计算机,每一位不把它自己的地址。最小的可寻址单元的内存是一组8位称为一个字节。

下面的图片显示了一些连续的内存地址,以及相应的字节的数据:


因为所有的数据在计算机只是一个序列的比特,我们使用一个数据类型来告诉我们如何解释记忆的内容在某些有意义的方式。你已经见过的一个例子,一个数据类型:整型。当我们声明一个变量为整数,我们告诉电脑“块内存,这个变量地址将被解释为一个整数”。
当你分配一个值到一个数据类型,计算机负责编码的细节你的价值成适当的位序列的数据类型。当你要求你的值返回,程序”从“你号码的顺序在内存碎片。
还有许多其他的数据类型在C + +除了整数,其中大部分我们将讨论不久。作为速记,我们通常指一个变量的“数据类型”作为它的“类型”。
声明一个变量
在“基本的C + +”部分中,您已经学习了如何声明一个整数变量:
int nVarName; // int is the type, nVarName is the name of the variable
将变量声明为其他数据类型,这个想法是完全相同的:
type varName; // type is the type (eg. int), varName is the name of the variable
在接下来的例子中,我们申报的5个不同变量的5不同类型。

bool bValue;
char chValue;
int nValue;
float fValue;
double dValue;
就这么简单。(嗯,几乎,有几件事你不能命名变量,我们将在下一节讨论)
你也可以赋值变量在声明。当我们给一个变量赋值使用赋值运算符(等号),这就是所谓的一个显式赋值:
int nValue = 5; // explicit assignment
你也可以为变量赋值使用隐式的任务:
int nValue(5); // implicit assignment
虽然隐式作业看起来很像函数调用,编译器跟踪变量的名称和功能,以便他们可以加以妥善解决。
声明多个变量
可以声明多个相同类型的变量在一个声明的名字用逗号分开。以下两段代码实际上是相同的:

int nValue1, nValue2;
1
2
int nValue1;
int nValue2;

也可以将它们分配给值的声明线:

int nValue1 = 5, nValue2 = 6;
int nValue3(7), nValue4(8);

这实际上是一样的:
int nValue1 = 5;
int nValue2 = 6;
int nValue3 = 7;
int nValue4 = 8;
有三个错误,新程序员往往使当声明多个变量在同一个语句。
第一个错误是声明每个变量作为int(或者任何类型它是)在序列。这不是一个很严重的错误,因为编译器会抱怨和要求你修复它。
int nValue1, int nValue2; // wrong (compiler error)
 
int nValue1, nValue2; // correct
第二个错误是,尝试不同类型的声明两个变量在同一条线上,这是不允许的。不同类型的变量必须声明在单独的语句。这也不是一个糟糕的错误,因为编译器会抱怨和要求你修复它。
int nValue1, double dValue2; // wrong (compiler error)
 
int nValue1; double dValue2; // correct (but not recommended)
 
// correct and recommended (easier to read)
int nValue1;
double dValue2;
过去的错误是危险的情况。在这种情况下,程序员错误地试图初始化这两个变量通过使用一个赋值语句:
int nValue1, nValue2 = 5; // wrong (nValue1 is uninitialized!)
 
int nValue1 = 5, nValue2 = 5; // correct
在顶部的声明中,nValue1变量将左未初始化,编译器不会抱怨。这是一个非常好的办法,你的程序崩溃和生产零星的结果断断续续。
最好的方法是记住这是错误的认为此案的隐式初始化:
int nValue1, nValue2(5);
这使它看起来更清楚,价值5只被分配到nValue2。显式赋值情况下是没有不同的。
在哪里声明变量
年长的C语言编译器强制用户声明所有变量在函数在顶部的功能:
int main()
{
    // all variable up top
    int x;
    int y;
 
    // then code
    using namespace std;
    cout << "Enter a number: ";
    cin >> x;
 
    cout << "Enter another number: ";
    cin >> y;
 
    cout << "The sum is: " << x + y << endl;
    return 0;
}
这种风格现在是过时的。c++编译器不需要声明所有变量在顶部的一个函数。适当的C + +的风格是声明变量,什么时候和在哪里他们是必要的:
int main()
{
    // then code
    using namespace std;
 
    cout << "Enter a number: ";
    int x; // we need x starting here.
    cin >> x;
 
    cout << "Enter another number: ";
    int y; // we don't need y until now
    cin >> y;
 
    cout << "The sum is: " << x + y << endl;
    return 0;
}
这有不少优势。首先,声明的变量,只在需要时由语句给出上下文周围。如果x是宣布在顶部的函数,我们就不知道它是用来扫描函数,直到我们发现它被使用。声明x在一群输入/输出语句有助于使它明显,这个变量是用于输入和/或输出。
第二,声明一个变量只需要的地方告诉我们,这个变量不会影响任何东西,使我们的项目上面容易理解和要求更少的滚动。最后,它减少了可能无意中留下一个变量未初始化,因为我们可以声明,然后立即初始化它的价值我们想要的。






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值