static 修饰全局变量
也就是static修饰的全局变量。作用域仅限于变量被定义的文件中,其他文件即使用 extern声明也没法使用它。
static 修饰的函数
同静态全局变量,作用域仅限于方法定义的文件中。
函数前加 static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。
关键字 static有着不寻常的历史。起初,在 C 中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static 在 C 中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用 static关键字来表示这第二种含义。
sizeof
sizeof 是C语言中的关键字,而非函数。
sizeof 计算类型(如int)大小时,要用括号将类型括起来,不能省略括号。计算类型的对象、变量时,可以省略括号。
typedef 数组和动态数组的删除
1 typedef std::string AddressLines[4];
2 std::string *pal = new AddressLines; //注意 new AddressLines 返回一个string*,就像new string[4]一样
3 //重要的是:删除时调用数组形式的delete
4 delete pal; //error, 导致未定义行为
5 delete [] pal; //right
6
2 std::string *pal = new AddressLines; //注意 new AddressLines 返回一个string*,就像new string[4]一样
3 //重要的是:删除时调用数组形式的delete
4 delete pal; //error, 导致未定义行为
5 delete [] pal; //right
6
1、注意删除动态数组时,中间的[]。
2、为避免错误,最好不要对数组形式作typedef 动作。