1.int i = -1;
unsigned int ui = i;
unsigned int = -1;
显示无符号整形最大值,可能会有编不过情形,强制类型转换(unsigned)-1;
2.静态局部变量的作用域:整个程序运行期间存在,但只在局部使用,只在第一次遇到时创建初始化,以后不再创建和初始化
3.外部变量:extern 声明,一定要在某地定义才能使用
4.静态全局函数:只在本文件中使用
5.标准C++规定数组个数为常量
6.初始化:定义变量的同时赋值
7.输出16进制字符串地址:char a[20]; cout<<hex<<(int)&a<<endl; 或者 cout<<(void*)a<<endl; 其中&a为取数组的首地址不是指针值a的地址和去函数名地址相同int fun();fun = &fun;
8.不允许对数组名赋值,可以用strcpy();
9.数组中元素未赋值补零,char a[20] = {};
10.double类型小数部分为零时,不显示小数部分
11.数组初始化时可以集体赋值,如int a[3] = {1, 2, 3};未初始化,只能逐个赋值不能使用{}集体赋值
12.数组越界访问破坏别的数据,a[-1]一样是越界,都可能破坏其他数据
13.数组名当数值使用时,仅仅是一地址,传入数组参数时实际传入的是指针,数组首地址
int a[5];
void fun(int v[])//形参中一维数组和二维数组第一个维可以不写,写什么好像都无所谓,但第二维一定要正确,无论写否都是传入的指针值
{
sizeof(v);//sizeof指针类型
}
sizeof(a);//sizeof数组类型int [5]
fun(a);
14.c++中只有指针能保存地址,也只能保存地址
15.c++自动将低级数据类型转为高级,如int/double结果为double
16.简单排序:
for(int i = 0; i < N; ++i)
for(int j = i + 1; j < N; ++j)
if(a[j] < a[i])
swap(a[j], a[i]);
17.二维数组传参:
int a[2][3];
void fun(int v[][3])
{}
fun(a);
18.vi ~/.exrc
<span style="font-size:14px;">set ts = 3
set nu
ab .i #include<iostream>
ab #i #inlude //vi中输入#i确定出现#include</span>
19.strut和数组一样如果没有初始化,要逐个成员赋值
20.头文件<cstring>,char a[20] = {'a', 'b', '\0', 'c', 'd'};
strcpy(a, "hello");
strlen(a);//2
sizeof(a);//20
strcmp(str1, str2);//str1>str2,>0; str1<str2, <0; str1=str2, =0;
strcat(a, "hello");//追加