C语言基础(1)

C语言基础(1)

gcc编译c语言文件:

gcc编译器 exit=return #号在预处理解决
预处理 gcc -E hello.c gcc -E hello.c >hello.i
编译 gcc -S hello.i
汇编 gcc -c hello.s
链接 gcc hello.o -o hello 生成可执行文件
运行 ./hello
直接编译 gcc hello.c /make hello/gcc hello.c -o hello 三种方法编译效果一样
shift +k直接查看函数功能 ctrl+p补全变量名

调试error方法:

gcc hello.c -Wall 打印警告报错
不包含头文件的函数使用会默认返回一个int型
出错时用 -wall 打印警告进行调试更改 用man去查函数分返回值类型

c语言编写注意:

独立出来的小功能都要尽量写成小函数
return 0 返回给父进程看的
printf有返回值为字符长度
#if 0 … #endif 用于注释表示不参与编译
算法(流程图 ,ns图 ,有限状态机FSM)三种算法逻辑图
防止写越界,防止内存泄漏,谁打开谁关闭,谁申请谁释放

c语言数据类型:

数据类型及位数 c程序不识别2进制只识别10/8/16进制
int 32 short 16 long 64 unsigned 32 unsigned short 16 unsigned long 64
float 32 double 64 char 8 unsigned char 8
B开头表示二进制,0开头表示8进制,0x开头表示16进制
float浮点型存储 最高位为符号位 23-30(8)为阶码位 0-22(23)为尾数位
ASCII码对照表 049-057(30-39)为0-9 065-090(41-5A)为A-Z
097-122(61-7A)为a-z 000为NULL表示空 char型注意符号问题

数据类型使用注意:

隐式转换默认向精度高的类型转换 例:
(char - int) - (float - double) == int - double =double;
布尔类型头文件<stdbool.h> true=1 false=0
float类型并不是精确的数据,无法与真正的数相比
float与0比较 :fabs(float-0)<=1e-6 认为float接近于0;
不同形式的0例如:0,‘0’,“0”,‘\0’;
数据类型与后续代码输入输出的数据类型要相匹配;

常量define的使用

常量的值不会发生变化,不能出现在赋值语句的左边
#define 定义常量不检查语法,只是单纯的宏体与宏名之间的替换
#define 可以带参数,注意运算符的优先级,例如:
#define MAX(a,b) (a > b ? a : b) 修改成 ((a) > (b) ? (a) : (b))
参数为i++,j++时会出错,用额外的变量A,B传递参数参与运算 可以用typeof(a)获得参数的数据类型来传参
宏使用不稳定要着重注意
内核模块对反应时间要求高,建议使用宏;应用层对稳定性要求高,建议使用函数

变量定义:

[存储类型] TYPE NAME = VALUE;
NAME 只能由字母,数字,下划线组成且不能以数字开头的一个标识序列 标识符尽量见名生义
存储类型 :auto:默认,自动分配空间,自动回收空间,放置在内存空间栈上。
register:寄存器类型,资源少速度快,只能定义局部变量,不能定义全局变量,只能定义32位大小的数据类型,无法打印出地址查看使用。
static:静态型,自动初始化为0值或空值,并使其变量的值有继承性,使用唯一地址空间。
extern:说明型,不能改变被说明的变量的值。
全局变量作用范围从当前定义位置开始一直到程序结束。
局部变量作用范围从当前定义位置开始一直到块结束,即当前大括号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值