1,10UL 是正确的。 1.21UL是错误的 因为U不是用于浮点数
2,字符串在c++中换行的话需要 \ 符号
如: "hello \
how are you"
你还可以是用""来包裹在2行的字符串
如: "hello"
"how are you"
3,"two" 代表字符串 L"two" 代表宽字符串是wchar_t类型的。 原本"two""two"连个字符串拼接是没有问题。
但是如果"two" L"two"这样的拼接是没有被c++所定义的。请不要这样是用。
4,对象在使用前必须先声明,那么如果在一个文件中需要是用另一个文件的对象,那要怎么做用extern 关键字
如 class1 string fileName; class2 extern string fileName ;
其区别在于class1,为变量分配了内存地址。 class2并没有这么做,而是让class2知道fileName存在即能是用他。
5, 什么是左值和右值? 期初我也举得奇怪,从来没听过,我太菜了。
左值:内存地址,或是某个代表对象在内存中的位置的表达式
右值:就是变量的值。
6, void*类型指针可以接受任意类型的指针赋值操作,但是不支持函数指针
7,1 int i,j,k;
3
4 *pi=*pi+2;//值+2
5
6 pi=pi+2;//地址+2
地址+2未必有效。因为i,j,k未必是连续。
8,c++对于字符串的处理可以使用char,string,2者在获取字符串的属性上比如长度等,都有所不同,char属于c风格,string属于class风格。c风格在获取属性上都使用c库中的方法,如,strlen(). class风格则使用size(),但是2者在执行循环获取值和copy的时候,并不是说c的就比class的快。因为c在获取length的时候需要遍历原有数组。
9,例子
2
3 pic=&a;错误的
4
5 *pic=0;
6 *pic=&a;正确
10,引用int &a=b;引用必须初始化。因为引用不能在定义后指向另一个对象。
在对引用进行赋值的时候会产生一个temp临时对象来存放值,然后用temp对原始对象进行复制,达到对引用赋值的效果。
1 const int a=100;
3 const int &b=a;
4
5 //以上代码被转换
6 (int temp=a;)
7 (const int &b=temp;)
11, 指针和引用的区别:
引用总是指向一个对象,如果用引用给另一个引用赋值,那么改变的是对象的值,并不是引用的值。也就是说引用复制了一份对象。在接下来的程序中引用保存了最原始的对象内容。而原始的对象有可能进行了赋值操作已经得到改变。
12,对于引用的补充:
a,常量引用必须使用const关键字,即 const int &a=1.01;没有const的就是错的
b,int &a=&b;是错误的,类型不符,不能把一个指针赋值给一个int类型。可以做如下修改 int &a=b; 或者 int *const &a=&b;前者是把类型统一成int,后者是把类型统一成指针
13,enum:枚举不能迭代,枚举无法输出实际的名字,只能输出实际的int值。如果使用一个字符数组来索引ENUM还是能输出实际的string值的。
14,预先定义数组大小需要const类型。初始化数组如果使用"a"这种方式,那么其包含的是2个字符。
15,vector: vector<int> v1=(10); vector<int> v2=(&[1],&[3]);其初始化与数组不同不能{1,2}这样,要使用如同这样的vector <int> v3=(10,2);意思是,10大小,赋值都为2.
可以定义一个空vector 如 vector<string> vs; 但是不要在这样给其赋值 vs[0]="aaa";这样是错误的。
16,复数complex可以使用double,float,long,数组(数字),指针,引用。
17,typedef 是助记符号。如 typedef double a; a ab,ac;ab,ac都是double类型。也可以double ab,ac;
18,volatile 是限定修饰符,告诉编译器,对象的值可能在编译器监视以外被改变,请不要强加优化措施。
19,pair类型。字面上是一双,一对的意思。只能包含2个元素,还是用first,和second来取值得。用typedef可以定义多个pair。简单点,不然需要反复的形成诸如<string,string> 这样的类型声明。

浙公网安备 33010602011771号