C语言基础

C语言基础

数据类型

在这里插入图片描述
注:int、short int、long int是根据编译环境的不同,所取范围不同。而其中short int和long int至少是表中所写范围,但是int在表中是以16位编译环境写的取值范围。另外 c语言int的取值范围在于他占用的字节数 ,不同的编译器,规定是不一样。ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VC里,一个int是占4个字节的
注:C语言中不存在字符串变量,字符串只能存在字符数组中,这个后面会讲。

基本运算

如果相除的两个数都是整数的话,则结果也为整数,小数部分省略,如8/3 = 2;而两数中有一个为小数,结果则为小数,如:9.0/2 = 4.500000。

局部变量和全局变量

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内
全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序

二维数组

二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。可以查看多维数组这节的相关知识

Linux下的C语言

常用Linux命令
  1. sudo apt-get update 管理员执行更新最新资源
    (例子:sudo apt-get install vim 安装vim,也要安装一个make方便编译)
  2. mkdir 创建目录
  3. pwd 看源路径
  4. gcc 编译c语言文件(make比gcc方便) ./在当前目录下运行该文件
  5. gedit 打开文本编辑器
  6. cat 用于连接文件并打印在标准输出设备上 (看日志cat /var/log/samba/log.nmbd)
  7. 输出流的重定向: >> 重定向命令;如果重定向而且覆盖原有的就只用一个 >
  8. 输入流的重定向:< 输入流重定向
  9. | 前一个命令的输出流作为下一个命令的输入流,起一个管道的作用
  10. make(约定好的MakeFile,在这个文件中对编译情况有介绍,类似于shell)

C语言中的指针和内存

指针
  1. &:取地址符
  2. int *p 等价于 int* p
内存

内存由操作系统进行统一管理,操作系统除了能给内存做编号以外,还能给内存做一系列的规划,变量的本质就是内存(&变量,代表这个内存的地址),指针保存的就是内存地址。
内存大致结构如下:

  1. 代码段:代码编译后的二进制数据加载到内存中
  2. 数据段:声明一些全局变量或者是声明一些常量
  3. 栈:函数当前的运行状态
  4. 系统内核:预留给linux系统的系统内存空间
    在这里插入图片描述

C语言结构体

C语言预处理

编译的4个步骤:
.c文件–>.i文件–>.s文件–>.o文件–>可执行文件
预处理 编译 汇编 链接

预处理(检查语法):

  1. 展开头文件
  2. 进行宏替换
//宏定义
#define
//还可以有宏函数
int add(int a,int b){
return a+b;
}
//等价于宏函数,宏对变量类型不关心
#define ADD(a,b) (a+b)
结构体的使用

结构体是不同类型变量的集合,可以存放一组有关联的数据

//简单例子,定义一个武器的结构体
struct weapon{
	char name[20];
	int atk;
	int price;
};
//结构体的初始化和引用
struct weapon weapon_1={"weapon_name",100,200};
//访问结构体的内容
weapon_1.name;
//结构体数组
struct weapon weapon_2[2]={{"weapon_1",100,50},{"weapon_2",234,324}};
//结构体指针
struct weapon *w;
w=&weapon_1;
共用体的使用

几个不同的类型变量共享同一个内存单元,关键字union,好处是可以节省开销,坏处是在同一时刻只可以存储一个成员。

//例子
union data{
	int a;
	char b;
	int c;
};

malloc分配内存块的函数,sizeof判断数据类型的长度符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值