C语言学习笔记
时间:2022-07-25
本文章向大家介绍C语言学习笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
修饰符
const :加在int前面,用于给一个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。
const int NUMBER=100;
如果你试图对常量修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误。
C99
C语言常用格式化字符
格式化输出语句,也可以说是占位输出,是将各种类型的数据按照格式化后的类型及指定的位置从计算机上显示。这样做的好处,是有利于计算机能够准确的将我们所要类型数据给我们。
格式符 |
说明 |
举例 |
---|---|---|
%d |
带符号的十进制整数 |
int a=10;printf("%d",a);输出结果为10 |
%c |
单个字符 |
char x='a';printf("%c",a);输出结果为a |
%s |
字符串 |
printf("%s","你好");输出结果为你好 |
%f |
6位小数 |
float a=1.23;printf("%f",a);输出结果为1.23 |
格式符的个数要与变量,常亮或者表达式的个数一一对应
常量
在程序执行过程中,值不可改变的量称为常量。C语音的常量可以分为直接常量和符号常量。
直接常量也称为字面量,是可以直接拿来使用,无需说明的量,比如:
- 整型常量:1,10,-10;
- 实型常量:13.33,-24.4;
- 字符常量:'a','R';
- 字符串常量: "I Love You";
printf("%dn",100); //整型常量
printf("%fn",3.14); //实型常量
printf("%cn",'A'); //字符常量
printf("I Love you"); //字符串常量
在C语言中,可以用一个标识符来标识一个常亮,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常亮值;
符号常亮的标识符一般使用大写字母表示,变量的标识符一般习惯使用小写字母,方便区分。
常量是不可改变的
形参与实参
函数的参数分为形参和实参两种,形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数 实参是在调用时传递该函数的参数 函数的形参和实参具有以下特点:
- 形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
- 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。
- 在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
递归函数
例子:
#include<stdio.h>
int factorial(int n){
int result;
if(n<0)
{
printf("输入错误!n");
return 0;
}else if(n==0 || n==1)
{
result =1;
}else{
result=factorial(n-1)*n; //调用自身
}
return result;
}
int main(){
int n =5;
printf("%d的阶乘=%d",n,factorial(n));
return 0;
}
递归函数的特点:
- 每一级函数调用时都有自己的变量,但是函数代码并不会得到复制,如计算5的阶乘时每递推一次变量都不同;
- 每次调用都会有一次返回,如计算5的阶乘时每递推一次都返回进行下一次;
- 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序;
- 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;
- 递归函数中必须有终止语句。
一句话总结递归:自我调用且拥有完成状态
- 原生javascript实现图片轮播效果代码
- Spring AOP中 args和arg-names的区别
- Golong 语言开发 go-websocket-sample 测试值得拥有
- Java面试系列23-spring(2)-配置数据库驱动、依赖、Mapping等
- 【Golang语言社区】 Go语言中使用 Protobuf
- Java面试系列21-xml
- tensorflow载入数据的三种方式 之 TF生成数据的方法
- JS游戏开发 可移动地图的实现
- Java面试系列-多线程
- pymongo.errors:Sort operation used more than the maximum 33554432 bytes of RAM. Add an index,
- PG学习初体验--源码安装和简单命令(r8笔记第97天)
- Pymongo: TypeError: if no direction is specified, key_or_list must be an instance of list
- Java面试系列19-Struts2
- JS游戏开发,让你的静态人物动起来(来自网路)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- NDK开发案例 | C/C++调用java层代码
- 深入理解 SecurityConfigurer 【源码篇】
- Swift 属性
- Swift 类和结构体
- 使用深度学习和OpenCV的早期火灾检测系统
- 【时序预测】一文梳理时间序列预测——ARMA模型
- 三分钟Kubernetes-环境搭建篇
- Linux分区页框分配器之水位
- 使用GPU训练模型
- Spring事务源码分析专题(一)JdbcTemplate使用及源码分析
- TensorFlow处理运动想象分类任务
- 使用kepler.gl可视化地理空间数据
- 聊聊 Python 代码覆盖率工具 - Coverage
- 目标检测模型YOLO-V1损失函数详解
- 轻松学Pytorch-使用ResNet50实现图像分类