1. 移位运算符 << ,>>:离开“变量”任一端的位都将丢失,另一端用0补足。
2. cout<<setw(n)<< “something” ,指定输出宽度。必须添加头文件<iomanip>.
3. 只要位不丢失,左移n位相当于原来的数值乘以2n;右移n位相当于原来的数值除以2n。但是如果位丢失的话,结果可能大相径庭。
4. 可以使用“::”运算符,表示引用的变量为一个全局变量。全局变量一般是在程序开始的地方定义的,即定义在所有函数的外边,包括main函数。还有变量必须在使用之前定义。
5. 在C++/CLI编程中,基本数据类型表如下:
特别注意画勾的类型。wchar_t 类型在这里的类型为System::Char。
6. 注意引用某一个类的函数或变量用“::”,而C#里为“.”。
7. 选中某段代码,再按“Alt + F8”,代码将自动按格式对齐。
8. Int32::Parse()函数,接受的参数为一个字符串型的整形值,不能有字母等字符。
9. safe_cast在CLI用于显示的强制类型转换。
10. C++/CLI的枚举是一个类定义,必须在全局作用域中定义它。格式: enumclass day :int {Mon,Tue,Wen,Tus,Fri,Sat,Sun};int为指定枚举的类型值,也可以为其它类型。
11. 字符大小写转化:Char::ToUpper()和Char::ToLower()。检测大小写:Char::IsUpper()和Char::IsLower()。
12. String ^ line =Console::ReadLine(); 字符^表示这是引用string对象的句柄。
13. 倘若提供初值的话,我们还可以省略数值型数组的长度,数组元素的数量由提供的初值数目决定。 int value[] = {2,3,4}; 数组长度为3。
14. char[6] = “hello”,给字符数组指定元素数量时必须包括终止字符’\0’。一般可以不指定长度。同理对应于宽字符。wchar_t[6] = L”hello”;
15. 在二维或多维数组中,最右边的一维必须是确定的。
16. long* p, a; 该语句声明了一个long 类型的指针p,还声明了一个long类型的变量a;
17. 因为我们事先不知道将动态创建多少个变量,所以最佳的方法是使用指针。
18. 使用未初始化的指针是相当危险的。可以将一个指针初始化为NULL,在使用的时候先检测一下其值是否为NULL。也可以用0。
19. sizeof运算符将产生size_t类型的整数值,size_t是由标准库定义的类型(unsigned int)。将变量定义为size_t类型,以匹配sizeof运算符产生的类型。
20. const char* const pstring = “sometext” 第一个const表示指向的字符串是个常量。第二个const表示指针为常量,不能改变,不能指向其它变量。
21. 递增和递减指针运算与指针指向的对象类型有关。将指向long类型的指针加1,则该指针指向下一个long类型的变量,指针包含的地址将加4.
当数组是一维时,可以将数组名赋值给指向该数组的指针。但是当数组是二维时就不行。举例说明:
int mul_array[2][3] =
{
{1,2,3},
{4,5,6}
};
从图中可以看出,mul_array其实相当于一个一维的数组,每个成员存储一个一维数组的指针,指向的类型为int[3]。当引用mul_array[1][2]的时候,其指针引用形式为
*(*(mul_array+1)+2)。当指针mul_array移动的时候,它每次移动的大小等于它指向的类型所占用的字节数,此处为12字节。
再看看三维的情况:
int mul_array[2][2][3]=
{
{
{1,2,3},{4,5,6}
},
{
{7,8,9},{10,11,12}
}
};
分析方法类似。引用mul_array[1][1][2]的指针方法为*(*(*(mul_array+1)+1)+2)。从内存状态可以看出,其实数组mul_array[2]和二维数组mul_array[2][2]在内存中是不存在的,内存中只存储了三维数组的各个元素的值。
22. 引用是另外一个变量的别名。
23. strlen()将一个类型为char *的参数字符串的长度作为一个size_t类型返回。注意这个长度不包括字符串的终结符’\0’。
24. 安全字符串函数strcat_s()strncat_s(); wcscat_s(),wcsncat_s()。strcpy_s(),wcscpy_s()
25. strstr()返回一个指针,指向第一个参数中第二个参数指定的子串的位置。
26. CLR会自动释放不再需要的堆内存,还会自动压缩零碎的内存。所以我们不要使用delete运算符。使用对应的gcnew运算符分配内存。