9. 全局变量和局部变量的区别
定义:全局变量是定义在函数外部的变量,局部变量是定义在 函数内部的变量
存储位置:全局变量存储在全局区,局部变量存储在栈区
作用域:全局变量可以在程序任意位置使用,局部变量只能在函数内部使用
生命周期:全局变量的生命周期为整个程序,程序结束空间释放,局部变量生命周期为本函数,函数结束空间释放
初始化:全局变量未初始化初 值为0,局部变量未初始化时值为随机值
11.memcpy和strcpy的区别?
- 拷贝内容:
- memcpy:memcpy 是用于拷贝指定大小的数据块(字节),它不会自动检测字符串结束符('\0'),因此适用于拷贝任意数据,包括字符串和非字符串数据。
- strcpy:strcpy 是用于拷贝第一个以 '\0' 结尾的字符串,它会自动拷贝整个字符串,包括字符串结束符 '\0'。
- 参数:
- memcpy:memcpy 的函数原型为 void *memcpy(void *dest, const void *src, size_t n);,其中 dest 是目标地址,src 是源地址,n 是拷贝的字节数。
- strcpy:strcpy 的函数原型为 char *strcpy(char *dest, const char *src);,其中 dest 是目标字符串的地址,src 是源字符串的地址。
- 安全性:
- memcpy:memcpy 不会检查目标地址是否足够大,如果目标地址空间不够大,可能会发生缓冲区溢出的问题,导致程序崩溃或数据损坏。因此,在使用 memcpy 时需要确保目标地址有足够的空间来容纳源数据。
- strcpy:strcpy 会自动添加符字串结束符 '\0',但如果源字符串太长,超出了目标字符串的空间,也会导致缓冲区溢出问题。因此,使用 strcpy 时应留足够的空间来·容纳源字符串。
- 性能:</