C++程序的易混淆的数据元素(变量和常量)

       通过这几天的看书,越来越觉得只有静下心来才能真正的读进去,尤其看编程的C++语言,以前总觉得只要会一些就可以了,拉下了许多,都是一知半解,重新仔细了解C++的一些基本概念,感觉自己要坚定好好学习这门课程,为将来的数据结构奠定一个好的基础。今天就把这两天的一些基础知识做一下梳理和总结。

一变量的类型(主要梳理存储类

       变量的类型包含数据类型和存储类,一般我们都知道数据类型,我就是遗忘了变量的存储类,一旦涉及,我就不清楚了。存储类分为四种:auto(自动类),register(寄存器类),extern(外部类),static(静态类,包含内部静态类和外部静态类)。

        auto:说明符可以省略,作用域在定义它的函数体内或分程序中的局部变量

        register:说明符不可省略,作用域在定义它的函数体内或分程序中的局部变量,一般只能用int型变量和char型变量。

        以上两种变量类型在作用域内是可见的,存在的;退出后则不可见,也不存在。因此这两类变量可见性和存在性是一致的。此外,它们在定义或说明后没有默认值,只有被初始化或赋值后才可使用。

       extern:外部类变量的定义和说明是两回事。只能定义一次,但可以说明多次。定义时,不需要加说明符,只要写在函数体外就可以了。说明时,必须加说明符extern。如果先引用,后定义,引用时必须说明;如果先定义,后引用,则不必说明。外部类变量被定义后,有默认值,char型变量为空,int型变量为0,浮点型变量为0.0。外部类变量的作用域最大,是整个程序,它的可见性和存在性是一致的。

       static;说明符不可省略,静态类分为内部静态类和外部静态类。内部静态类的作用域在定义它的函数体内或分程序中,它的可见性和存在性不一致,超出作用域后不可见但存在。外部静态类的作用域介于外部类和内部静态类之间,在定义或说明它的文件中国。它的可见性和存在性也是不一致的。静态类被定义或说明后有默认值,char型变量为空,int型变量为0,浮点型变量为0.0。两者区别在于前者定义在函数体内或分程序中,后者定义在函数体外。

二赋值和赋初值

       赋值:变量被定以后,使用赋值表达式语句来使变量重新获取值。例如;

        int    a;

        a=1;

        赋初值:在说明语句中,定义变量的同时,使变量获取值。例如:

        double b=2;

三变量值和变量地址值

          变量值是变量存放在内存单元中的内容,它是该变量的数据值,直接引用该变量名就是使用该变量的数据值。例如:int a=1,1就是变量值。

           变量地址值是存放该变量的内存的地址值,一个变量的地址值蓓表示在该变量名前加上运算符“&”。例如:int a=1,&a就是变量地址值。

三字符常量和字符串常量

       字符常量:用单撇号表示,如‘a',在内存中存放时所占空间是1字节,在一定的范围内可以与整型数进行加法或减法运算(char d1='B';cout<<d1+1<<endl;运行程序时输出值为67.)字符变量可存放一个字符常量。

        字符串常量:用双撇号表示,如“a",在内存中存放时所占空间是2字节(除了存放ASCII码值还要存放'\0',它也占1字节),字符串常量不具备运算功能(char sl[]="abcdef‘;cout<<sl+2<<endl;运行程序时输出的是cdef),它需要存放在字符串数组中。

四字符数组存放的是字符还是字符串

       两者的区别在于数组元素中是否有字符串的结束符('\0')。

       char s1[3]={'a','b','c'}   存放的是字符

       char s2[4]={'a','b','c','\0'}   存放的是字符串,因此char s2[4]="abc"。如果要对字符数组赋值时应对每一个元素进行赋值,不能用一个字符串常量直接赋值。(char s3[4];

s3[4]="abc";这种赋值是非法的,正确的应该为char s3[4];s3[0]='a';s3[1]='b';s3[2]='c';s3[3]='\0';)

五对于一个字符常量来讲,什么情况输出字符符号,什么情况输出字符的ASCII码值。

       对此情况我编写了一个小程序:

 

对于第一种情况输出ASCII码值(需要和数字进行运算);

对于第二三种情况输出字符符号。

六关于字符串长度和字节数的求法

  一开始遇到这种类型的题目毫无头绪,现在明白了。

  对于"ab\\\'cdef\n"这个字符串的长度为9(1'a''b''\\''\'''c''d''e''f''\n'),占10字节。(加上10'\0')。字节的大小始终比长度多1.

        对于这种情况编写程序:

 

 

      

  

 

 

 

  

     

      

 

 

 

             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值