C语言学习归纳

C语言程序组成
#include<头文件>
main函数 (函数参数)(在程序运行时候传入)
代码块
注释//
库函数引用。 防头文件重复命令:#pragma once
gcc编译器的工作流程
预处理:展开宏定义、头文件,条件编译等提前操作。删除代码中的注释。(不检查语法)
代码命令:gcc -E test.c -o test.i
编译:语法检测,将预处理过后的文件编译成汇编文件。
代码命令:gcc -S test.i -o test.s
汇编:将汇编文件转化为二进制文件,-c小写
代码命令:gcc -c test.s -o test.o
链接:将各种库链接程序中.
代码命令:gcc test.o -o test.exe //exe可以不写。默认exe
简易命令:一次性将c转化为exe命令
代码命令:gcc test.c -o test.exe
gcc 环境配置
找到 gcc.exe文件的所在目录,拷贝目录,找到系统变量中的path,添加,粘贴。
打开cmd,输如gcc -v测试是否成功
函数
4.1函数的组成:函数返回值类型—函数名称—参数—函数体
int func(int a)
{
return a;
}
返回值类型 函数名(形参) //没有调用时不使用内存的参数
{
函数体
}
4.2调用函数的方式
func(x);
函数名(传入的参数名);
函数知识
函数返回的地址都在栈中,函数结束时会被收回。所以不能返回地址。
函数可以使用地址形参改变实参数值。
4.3函数归纳:
4.3.1 printf(“”,a); 作用:输出双引号内的数据到控制台中。
常用类型:“%d”整形、“%c”字符型、“%lf”浮点型、“%s”字符串
scanf(“”,&a);作用:从控制台中获取数据并写入到a变量的内存存储空间中。
system(“pause”)作用:暂停程序;
system(“asd.exe”)作用:启动程序
sizeof(a)作用:计算为变量开辟的空间大小
getchar(); 作用: 输入单个字符; char ch = getchar();
putchar(); 作用: 输出单个字符; putchar(‘0’)
字符串操作函数:
fgets(地址,读取长度,stdin) 作用:获取字符串简化版gets(char x)
fputs(地址,stdout);//不换行.作用:输出字符串简化版puts()自动换行
strlen(数组名)作用:计算字符个数,不包括\0
strncpy(目标数组,被拷数组,字符数)作用:copy数组.简化版strcpy会把\0复制
strncat(目标数组,被拷数组,字符数)作用,cpy是覆盖,这个是追加.
需要注意数组不要溢出
strncmp(s1,s2,字符数)作用:对比字符串大小s1大就返1小就返-1相等返0.
比较原理:从第一个字符开始比ACSII码,相等就比下一个直到比出结果.
清空内存函数:memset(首地址,0,空间的大小),头文件在string.h
memcpy函数:memcpy(目标首地址,源首地址,要拷贝的字节数量);头文件在string.h
拆包函数sscanf :
在这里插入图片描述
组包函数sprintf :
在这里插入图片描述
在这里插入图片描述

strchr(数组名,字符),strstr(数组名,字符串)作用:检索字符或字符串
数据类型
主要数据类型:short(2字节) int(4个字节) long(4or8) 整形
char(1字节) float(4个字节) double(8个字节) 字符 浮点型

类型转换:小转大(隐式转换)
大转小 ,有误差,需要强制转化。(数据类型)x
常量:程序运行时不能改变的值(#define SIZE 50)(const修饰后的值)
变量:声明变量: 数据类型 变量名 (=100)//定义
变量名原则:不与关键字重名。主要由数字和字母组成,符号只能加下划线。数字不能开头,并且区分大小写。
进制转换
2转8
110010001110//3个3个隔开 … 110 010 001 110 变成 6 2 1 6 ->6216
2转16
1110 0101 1100 0110//4个4个隔开 1110 0101 1100 0110 变成E 5 C 6->E5C6
8和16转2. 由以上逆推即可.
X(2,8,16)进制转10进制
例如:1111
1*(X1)+1*(X2)+1*(X3)+1*(X4)
10转2,8,16
除X取余.
//注释 8和16进制不能直接转.

阅读码,由两种0,减法运算不准确
反码:原码的符号位不变取反(仅限负数)
补码:机器内的储存码.反码加一(仅限负数)

结构体:
结构体是自定义数据类型,将多种数据整合在一起。
联合体: 可以存储多种类型数据,但是只有一种能起作用。
enmu枚举:函数在调用枚举中的存在的变量时可以直接使用枚举内的值。

typedef: 用于给数据类型重命名。
控制语句
If(真即运行)
{
运行代码
}
else if(条件)
else
{
运行代码
}
1.1 while(真则运行) (dowhile相同,dowhile会先执行一次)
{
break;
}
7.3三目运算符
c=(a>b?a:b)
1.2 switch
switch(a)
{
case ‘1’ :
func();
break;
case ‘2’:
func2();
break;
default :
break;
}
1.3 for循环
在这里插入图片描述
基本循环步骤:定义—判断—循环体循环一次—条件变动—判断
—循环体循环一次—条件变动—判断 一直循环
1.4 break continue
break 是直接结束当前所有循环
continue 是结束本次循环。

数组
8.1定义: 一群相同数据类型的数据集合。存储空间连续。便于归类传输。
申请的空间一旦确定不可改变,变量名不能和数组名重复。

8.2代码: int array[3]={1,2,3}
代表这是一个长度为3(容纳3个)的Int类型数组。
8.3数组长度单位计算:
arr_length=sizeof(array)/sizeof(array[0]) (或*array)
8.4数组遍历
for(int i=0;i<arr_length;i++)
{
printf(“%d”,array[i];
}
8.5数组array[0]为数组第一个数 ,数组名后面的字符成为数组的下标。下标等于数组第n个数减一。
//注释:多维数组
array[3][2]_array[数组集合][元素集合]
array[3][3][5]_array[数组集合的集合][数组集合][元素集合]
以此类推。
二维数组:array2[i][j]
遍历方式 for(遍历i)嵌套for(遍历array[j]数组)
求二维数组数(x轴,也称为行数)
line = sizeof(array2)/sizeof(array2[0]) 这个0是第一个[]里面的.取代i
求二位数组每组元素个数
account=sizeof(array2[0])/sizeof(array[0][0])
总元素个数
count=sizeof(array)/sizeof(array[0][0])
字符串数组:创建的时候是从常量区拷贝数组;
字符串常量:数据在常量区,所以无法更改
时间随机数的使用方法
第一步:引入时间头文件#include<time.h>
第二步:设置随机种子srand((unsigned int)time(NULL));
第三步:获取随机数 a=rand(); %100代表0-99内
c语言的字符串
c语言的字符串属于多个char字符组成的数组.属于数组字符的一种,
字符串由(‘\0’ 或者数字0结尾)
指针
指针: 使用指针可以获得高效率和利用更少储存空间的效果。
指针:指的是地址。
指针变量:一种变量类型,专门存储地址数据,大小为8(64位)/4(32位)个字节。
int * char * double *都是标准的指针类型。
int *p = &a; 等于int *p;p=&a; 代表p存储了a的地址。*p则代表指向存储地址内的数据
指针步长:p+1 的变化由数据类型决定
野指针 :通过非法手段获取的地址的指针。合法获取方式只有通过库函数和通过变量获取。
空指针:指向NULL的指针。
万能指针:void *可以存储任何变量类型的地址。但是使用的时候会报错,需要提前转换。
常量修饰指针: const int *p 修饰的是指向地址存储的数值。
int *const p 修饰的是地址。
指针接数组的类型与数组类型相同。多维数组不能用多级指针接,要用数组指针接。
字符指针数组:{“123”,“345”,“456”}存储的是地址。
2. 数据类型
普通局部变量,作用域:函数内,代码块内。生命周期:随函数或语句完成结束。
静态局部变量 作用域:与普通局部变量相同生命周期:随程序结束
//函数返回变量地址的时候不能返回普通局部变量,因为函数结束时普通局部变量的内存空间会被收回。

普通全局变量,作用域:整个工程,同一工程的其他文件在使用的时候需要先使用extern声明一次。 生命周期:随程序结束
静态全局变量:作用域:整个工程。在main使用前已经分配空间并且初始化。
生命周期:随程序结束。

普通函数与静态函数的区别:作用域区别,普通函数作用整个工程,但是静态函数只作用于本文件。
内存
13.1内存分区:{栈区,堆区,全局静态区,代码区}
栈区:先进后出,由系统回收,程序员申请。
堆区:由程序员申请和释放。谁申请谁释放。
全局静态区:存储全局变量,常量。静态变量。
代码区:存储函数等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值