C 基础1

1.数据类型

类型分类
基本类型整型short (2字节)int(4字节) long(4字节)long long (8字节)
字符型char
浮点型单精度float 双精度double
构造类型数组类型arr
结构类型struct
联合类型union
枚举类型enum
指针类型char* int*

2.变量

先定义,在使用。
全局变量保存在内存的全局存储区中,占用静态的存储单元;

局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。

3.常量

3.1 常量

固定值,可以是很多种类型,整数类型,浮点类型。但必须要初始化

3.2 定义常量

//第一种
#define LENGTH 10  

//第二种
const int var =5;

4.储存类

auto

局部变量的修饰关键字

register

register 存储类用于定义存储在寄存器中而不是 RAM 中的`局部变量

static

可修改全局变量,最大是本类文件中。
static int count=10; 

extern

共享全局变量或者函数使用。

5.运算符

算术运算符

+
-
+
-
*
/
%
++a
a++
--a
a--

赋值运算符

=
+=
-=
*=
/=
%=

逻辑运算符

==
!=
<
>
<=
>=

位运算符

!&&||

杂项运算符

运算符描述实例
sizeof()返回变量的内存大小具体几个字节
&变量的内存地址
*指向一个变量*a 指向一个变量

6.类型优先级

在这里插入图片描述

6.函数

返回类型,函数名称,参数

7.数组

可以先声明,在赋值每个元素。

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

冒泡排序

int last = sizeof(arr)/sizeof(int);
for (int i = 0; i < last-1; ++i)
{
	for (int y = 0; y < last-1-i; ++y)
	{
		if (arr[y]>arr[y+1])
		{
			int temp = arr[y];
			arr[y] =arr[y+1];
			arr[y+1] = temp;
			/* code */
		}
	}
}

8 字符串

字符串就是以 \0 为结束符的一维字符数组

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

1.字符串初始化

C语言没有字符串类型,通过字符数组模拟

 char buf[] = { 'a', 'b', 'c' };

2.字符串长度

获取字符串长度,不包含字符串‘\0’

3.字符串追加

char str1[] = "abcdef";
	char str2[] = "123456";
	char dst[100];

	int i = 0;

	while (str1[i] != 0)
	{
		dst[i] = str1[i];
		i++;
	}

	int j = 0;
	while (str2[j] != 0)
	{
		dst[i + j] = str2[j];
		j++;
	}
	dst[i + j] = 0; //字符串结束符

4.疑问

如果字符数组不是以‘\0’结束会怎么样?

9 编译步骤

预编译–>a.c 到 a.i文件
编译–>a.i 到 a.s文件
汇编–>a.s 到 a.o文件
链接–>a.o 到 a.exe文件(或者可执行文件)

C代码编译成可执行程序经过4步:
1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
2)编译:检查语法,将预处理后文件编译生成汇编文件
3)汇编:将汇编文件生成目标文件(二进制文件)
4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

10 可变参数

导入stdarg.h 头文件。

int func(int num, ... ) 
{
   func(2, 2, 3);
}

11 命令行参数

argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数

int main(int argc, char const *argv[])
{

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值