[C++进阶]容易被忽视的细节之-基础篇

2,971次阅读
没有评论

数组与指针

定义数组

在定义数组时,假设我们这样做:

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可以省略。

Lyzen
版权声明:本站原创文章,由 Lyzen 2022-08-16发表,共计1893字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码