C语言中基本概念与常用函数

1.什么是预编译,何时需要预编译?

  1. 总是使用不经常改动的大型代码体。
  2. 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头
  3. 预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

2.局部变量能否和全局变量重名?

局部变量可以与全局变量同名,局部变量会屏蔽全局变量。

3.如何引用一个已经定义过的全局变量?

可以用extern关键字,外部就可以调用这个变量了。

4.全局变量是否可以被定义在多个.C文件中吗?

可以,在不同的C文件中以static形式来声明同名全局变量。但是只能在一个.c文件中赋初值。

5.static 关键字的作用

1.限制全局变量的作用域
2.设置局部变量的存储域
3.static(全局/局部)变量只初使化一次

6.volatile 关键字的作用

防止编译器将对所声明的语句进行优化

7. const关键字的作用

  1. 可以定义 const 常量
  2. const 可以修饰函数的参数、返回值,甚至函数的定义体。被 const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

8. extern关键字的作用

可以在不同的.c文件中引用已经定义过的全局变量

9.sprintf函数

功能:向一个字符串内格式化输入
在这里插入图片描述

10.sscanf函数

在这里插入图片描述

11.strcpy函数和strncpy函数和memcpy函数

函数功能:字符串拷贝
在这里插入图片描述
函数功能:字符串固定位数拷贝
在这里插入图片描述
函数功能:固定位数拷贝
在这里插入图片描述

strcpy 和strncpy函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。
memcpy 函数就是内存拷贝,实现 将一个 内存块 的内容复制到另一个 内存块这一功能。

12.strcat函数与strncat函数

函数功能:字符串的连接
在这里插入图片描述
函数功能:字符串的固定位数连接
在这里插入图片描述

13.strcmp和strncmp函数

功能:字符串比较函数
在这里插入图片描述
功能:字符串固定位数比较函数
在这里插入图片描述

14.sizeof()函数

计算变量所占的字节的长度,包含‘\0’。
在这里插入图片描述

14.strlen()函数

返回字符串的长度不包括终止符 ’ \0’
在这里插入图片描述

15.atof()函数

将字符串转换成浮点数
在这里插入图片描述

16.atoi()函数

将字符串转换成整型数的函数
在这里插入图片描述

17.#include <filename.h>和#include “filename.h”有什么区别?

对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h
对于#include“filename.h” ,编译器从用户的工作路径开始搜索 filename.h

18.GCC编译过程

1.预处理,生成预编译文件(.文件):
Gcc –E hello.c –o hello.i
2.编译,生成汇编代码(.s文件):
Gcc –S hello.i –o hello.s
3.汇编,生成目标文件(.o文件):
Gcc –c hello.s –o hello.o
4.链接,生成可执行文件:
Gcc hello.o –o hello
在成功编译之后,就进入了链接阶段

19.栈溢出

原因:

  1. 局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。
  2. 指针或数组越界。例如进行字符串拷贝,或处理用户输入等等。
  3. 递归调用层次太多,也会导致堆栈溢出。

解决:

  1. 动态内存分配
  2. 增大堆栈大小值
  3. 用栈把递归转换成非递归
  4. 使用static对象替代nonstatic局部对象

总结

欢迎指正谢谢!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值