首页 > 技术文章 > C++快速入门、变量、基本类型

lnleelove 2018-10-07 22:14 原文

整理看书过程中要注意的点

 
1、每个函数都必须指定返回类型,main函数的返回类型为int,通常return 0;,return 语句后面要增加“;”
 
2、C++文件后缀:cc,cpp,cxx,cp,c,visual C++认 *.cpp
 
3、输入输出使用iostream库,用cin, cout, cerr, clog,这些都包含在std  namespace中
     若在文件的开头没有写using namespace std,则用的时候应该是std :: cin
 
4、建立Visual C++ 工程文件时,选 win32 console application
 
5、在新的编译器中,在for中定义并初始化的变量,在退出for之后不能再次使用

 

6、wchar_t(16位)用于拓展字符,如中文、日文
 
7、short 16位,半个机器字长
      int     16位,1个机器字长
      在32位系统中,int 和 long有时字长是相同。
 
8、int 、short、long默认带符号位
      不需要带符号需增加unsigned前缀
      若仅写unsigned类型,则认为是 unsigned int
 
9、把-1赋值给unsigned char 类型的数,=255
      -1=-1*256+255
      C++对溢出的数求模取余
 
10、float 用32位描述,但只有6个有效位
        double用64位描述,有10个有效位
        long double 用96或128位描述,有10个有效位
 
11、以0(零)开头的数字常表示8进制
        0x开头的数字常表示16进制
 
12、指定LONG类型可以在数字后面增加”L“,无符号可以加”u“,float可以加"F",
        采用科学计数法时,用E或e表示
        在字符面前增加L就能得到wchar_t类型的宽字符面值,如L’a‘

 

13、为兼容C,C++的string类型的字符串,在字符串的最后会增加一个空字符
       如‘A’,是1个字符
          “A”,是1个字符A加1个空字符
         L“A”,宽字符串
 
14、两个相邻的字符串(或者两个宽字符串:注,一定要相同类型)或宽字符串,中间如果是空格、制表符、换行符,则分行撰写可以形成一行,如
       std::cout<<"I"
                         “The”
                         "world"<<std::endl;
       将输出 I The world的结果

 

15、多行面值,可以用反斜杠操作,可将下一行当同一行处理,反斜杠后不能加任何字符,反斜杠的下一行不允许有其他无关字符。
       std::cou\
t<<"Hi"<<st\
d::endl
 
16、回车和换行转义符号的区别
'\r'是回车,前者使光标到行首,(carriage return)

'\n'是换行,后者使光标下移一格,(line feed)

\r 是回车,return
\n 是换行,newline
对于换行这个动作,unix下一般只有一个0x0A表示换行("\n"),windows下一般都是0x0D和0x0A两个字符("\r\n"),苹果机(MAC OS系统)则采用回车符CR表示下一行(\r)

Unix系统里,每行结尾只有“<换行>”,即“\n”;
Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
Mac系统里,每行结尾是“<回车>”,即“\r”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。
写不同的系统代码,要根据系统的要求来编写代码。
第17~24 讲解了变量的初始化方法,变量名的同义定义,常量的定义方法,类型的同义定义,枚举类型的使用,这些在32位嵌入式芯片的程序设计中都是基础中的基础,一定要牢牢掌握,后续再抽空撰写32位内核芯片的常见定义以及相关说明的解读。
17、初始化

       直接初始化:
       int ival(1024);
       复制初始化:
       int ival=1024;
       直接初始化语法更灵活,效率更高。
       在C++中,可以用前面已初始化的变量,初始化下一个变量,如
       int a=12,b(a+1);
 
18、类中,定义如何进行初始化的成员函数称为构造函数。一个类可以定义几个构造函数。当类里面没有构造函数时,则会自动调用默认的构造函数
       初始化一个字符串的三种方法
       std::string title="C++ plus";
       std::string title2("C++ plus");
       也可以通过1个计数器和一个字符初始化string对象
       std::string title3(10,'9');  //title3=9999999999
 
19、定义,分配空间和初始值
       声明,讲明类型和名字
       一个变量只有1个定义,但可以有多个声明(不包含带初始化情况的声明),声明通常配合extern进行
       extern表明变量在别处已经定义过。
       任何在多个文件中使用的变量都需要有与定义分离的声明,在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明。
 
20、const 把一个对象转换成一个常量,常量在定义后不能修改,所以定义时必须初始化。
       例如:
       const int bufSize = 512;
 
21、const 默认为文件的局部变量,所以在其他文件中要使用时,需增加extern 声明。
 
22、引用,对象的另外一个名字,定义的时候要增加&
       在汇编程序中,相当于2个变量EQU同一个寄存器,无论哪个变量名去操作,寄存器的值都会发生变化

        int ival = 1024;

        int &refval= ival; //引用的定义
        refval++
        std::cout<<ival;  //输出的结果为1025
        在常数的定义中,也存在类似的用法,例如,
        const int ival=1024;
        const int &kval = ival;
 
23、typedef,定义数据类型的同义词。可以起到隐藏特定类型的目的,同时也使人更容易理解。
       typedef double wag;
       typedef wag salary;   //salary 实际就是double类型
 
24、枚举类型(关键字:enum
        默认枚举的第一个成员为0,也可以初始化第一个,后面依次+1,例如:
        enum form{shape=1,sphere,cylinder,polygon};
        但是,枚举的值又不是唯一的,例如
        enum point{point2d = 2, point2w ,point3d = 3, point3w}; // point2w = 3; point3w = 4;
        point  pt1 = point2d;

        注意:不能用int的定义,例如: point  pt1 = 2;

 
25、类类型
       类的定义以class关键字开始,包含接口(操作:成员函数)和实现(数据:数据成员)两部分;
       class Sales_item{
       public:
       private:
 std::string isbn;
      unsigned units_sold;
double revenue;
};// “;”号是最容易被遗忘的部分
类可以包含0到多个public或private,每一个类就是一种新的类型。
        类的数据成员不是在初始化时定义,而是通过构造函数。
不是类的组成部分的代码,不能访问private 成员,这样可以保护类中的数据成员。
 
26、struct 关键字(主要从C语言中继承过来)  ——在32位芯片程序的开发中常用到,在C语言中struct中不放成员函数,这一点与C++有很大的区别。而在硬件的底层编程中,主要使用C语言类型的结构体,所以要关注这点。
        struct中,未使用private部分默认为public;
        class中,未使用public部分默认为private;
 

27、设计自己的头文件

       因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义,#ifndef 只能保证在同一个文件中,相同的头文件段值包含一次;若同一个工程文件中的多个文件均有多个变量的定义,则编译的过程会报错。
       但是有三个例外:
       ① 类; ② const 对象; ③ inline 函数
       使用头文件的格式有两种:
       #include <iostream>//在指定的目录查找标准的头文件
       #include"iostream.h"//在源目录查找【工程文件所在的目录】
 

28、预处理器

       预处理器变量的名字在程序中必须唯一,否则其他重复的地方都将关联到预处理器变量
       为了避免名字冲突,预处理器变量通常用大写字母
       格式:
       #ifndef  SALESITEM_H
       #defineSALESITEM_H
       #endif       //结束预定义处理
 

推荐阅读