数组与指针
定义数组
在定义数组时,假设我们这样做:
int main(){
int arr[8];
int len = sizeof(arr) / sizeof(int);
for(int i = 0; i < len; i++){
std::cout << arr[i] << " ";
}
}
则会得到乱七八糟的输出:
-281020096 70 1435572696 32758 -1203169216 487 0 1
这是因为,声明int arr[8]
时,它在内存中找到了这一片区域,但这片区域的数据未被清理,因此会出现这样的结果。
为了解决这一问题,你可以这样做:
int arr[8] = {};
因为使用大括号初始化数组的数据时,没有指定的数据会被初始化为0,故一个空的大括号可以让数组内的所有数据都初始化为0。
不过,如果数组作为全局变量,则无需这样做:
int arr[8];
int main(){
return 0;
}
函数与指针
静态函数(内部函数)与外部函数
当一个程序由多个文件构成时,有一些函数只会在它所在的文件中被调用,不会提供给其他文件使用,这时我们就可以把它声明为static:
static void func();
这样的函数被称为内部函数(也叫静态函数),由于它只能在该文件内被调用,你也无需担心在其他文件中有同名函数的重复定义问题。
相应的,在函数声明前加extern,代表它为外部函数,即该函数在其他文件中定义。函数声明默认为外部函数,所以这个extern可以省略。