当前位置: 首页 > news >正文

学C笔记——更新于0731

函数和变量都需要满足:先声明后使用(重要)

在 函数的声明中,形参的名字可以省略

函数的定义是一种特殊的是声明,比声明更加强大;函数使用前必须进行声明,但不必要声明具体定义

.h——函数的声明

.c——函数的定义,说明使用

自己创建的头文件用“”

标准库里面的头文件使用<>

隐藏关键代码——静态库

extern用来声明来自外部的符号

全局变量的作用域是整个工程

变量创建到销毁是他的一个生命周期

static只改变变量的生命周期(存储方式),不改变作用域

static修饰全局变量时,改变了全局变量的链接属性,使得外部链接属性变成了内部链接属性,这种变量只能在自己存在的.c文件中使用,其他文件不能使用

函数也具有外部链接属性,只要在其他文件中有正确声明,就可以直接使用

包含自己的头文件应该使用双引号

F5是让程序执行到(运行逻辑上的如循环)下一个断点处

调试就是指对单个语句进行研究和分析,开始执行不调试就是最好的例子Ctrl +F5

调试时候,箭头指向的是下一步即将执行的语句(按F10或者F11)
开始调试后才能看到监视窗口

四个二进制位可以表示一个16进制位
三个二进制位代表一个八进制位
每一个字节都有一个地址

栈区中内存的使用习惯:(不同的实现环境里存在区别,以下为X86环境)
优先使用高地址的空间再使用低地址的空间,数组随着下标的增长,使用的内存空间地址由低到高变化

不同的环境,bug或者release不同版本使用,都会影响最后程序执行的结果
release版本是存在优化的

数组在函数传参时不需要再继续定义类型
每次函数调用的时候在栈区里都会有属于他们的一个专属空间(运行式堆栈),使用结束后会销毁
循环是一种迭代,迭代不仅仅是一种循环
斐波那契数列——指数爆炸增长
青蛙跳台阶问题

反码,除符号位外其他位都取反,
补吗,反码+1
非负整数原码、反码、补码相同

char 是否为signed char取决于编译器,在VS上是signed
char类型的取值范围:-128~127
x86_------32位环境
x64 ------64位环境
数组的元素是连续存放的
指针变量的访问和加减的空间都取决于 他的类型
指针-指针必须类型一致,连续同一的空间内
数组名其实是数组首元素的地址
有两个例外:
1.sizeof(数组名)
这里的数组名表示的是整个数组,计算的是整个数组
2.&数组名
这里的数组名也表示整个数组,取出的是整个数组的地址
除此之外,所有的数组名都是数组首元素的地址

arr[i]也可以写成i[arr],但是可读性不高
数组传参,形参部分写成数组
数组传参的本质,是传递数组首元素的地址,所以形参即使写成数组的形式,本质上也是一个指针变量
数组传参部分可以写成数组也可以写成指针

指针类型决定了指针的差异
size_t是一种无符号整型
在 C 语言里,'\0' 代表的是 ASCII 码值为 0 的空字符(Null Character)。它的数值等同于整数 0。在字符串里,'\0' 一般被用作字符串的结束符,以此表明字符串到此结束。
一个局部变量未初始化的话,他的值是随机的
空指针不能直接访问
使用指针前检查是否为空指针,保证程序没有问题if(p !=NULL)

避免返回局部变量的地址
使用%s打印字符串的时候 ,只需要提供首字符地址就行
常量字符串不能被修改,数组能被修改
内容相同的常量字符串只需要保存一份
排序算法:
冒泡排序
插入排序
选择排序
快速排序
qsort底层使用的快速排序的思想
两个字符串比较大小不能使用><>=<=
应该使用strcmp,比较的是对应位置上字符的ASCII值大小,不是字符串的长度
比较两个结构体
声明函数时,可以省略参数变量名字
void* 泛型编程
sizeof是操作符不是函数
strlen是库函数,求字符串的长度,只能针对字符串(字符数组),遇到\0停
strlen的参数需要是地址  size_t strlen(const char* str)
sizeof内部的表达式是不会真实计算的,他是根据类型推断的
指针+1和类型有关
整数+1就是+1
元素要用{},用()会变成表达式
++变量后是会变化值的
赋值表达式的返回值是他赋值后的左操作数的值
strcat ()字符串追加
0——数字0
\0——\ddd,表示1-3个8进制数字,ASCII值就是0
'0'——数字字符0,ASCII值48
NULL——0,

http://www.dtcms.com/a/308231.html

相关文章:

  • T30_Keras示例(MINST)
  • 逻辑回归——银行贷款案例分析
  • 内存网格、KV存储和Redis的概念、使用场景及异同
  • 企业签名的多种形式
  • 【AI落地应用实战】基于 Amazon Bedrock + DeepSeek构建 GraphRAG 应用程序
  • 30. background-size 有哪些属性
  • IO流专题
  • socket编程-UDP(1)-设计echo server进行接口使用
  • FPGA实现AD9361采集转SRIO与DSP交互,FPGA+DSP多核异构信号处理架构,提供2套工程源码和技术支持
  • 【12】大恒相机SDK C#开发 ——多相机开发,枚举所有相机,并按配置文件中的相机顺序 将所有相机加入设备列表,以便于对每个指定的相机操作
  • 存储学习笔记
  • CSS选择器常用语法
  • day24作业
  • 《Linux自动化运维三例:磁盘告警、服务守护与网络检测》​
  • Mysql超详细安装配置教程(详细图文,保姆级)
  • 掩码语言模型(MLM)技术解析:理论基础、演进脉络与应用创新
  • 【Prompt集合】一个学习英文单词更好的提示词
  • 从姑苏区人工智能大模型基础设施招标|学习服务器、AI处理器、GPU
  • 数据结构 ArrayList与顺序表
  • 机器学习——互信息(超详细)
  • 【物联网】基于树莓派的物联网开发【19】——树莓派搭建MQTT客户端及MQTTX使用
  • Vision Transformer(ViT)模型实例化PyTorch逐行实现
  • 从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP
  • SpringBoot3.x入门到精通系列:1.2 开发环境搭建
  • 25-vue-photo-preview的使用及使用过程中的问题解决方案
  • 实战教程 ---- Nginx结合Lua实现WAF拦截并可视化配置教程框架
  • 走进computed,了解computed的前世今生
  • 【云故事探索】NO.16:阿里云弹性计算加速精准学 AI 教育普惠落地
  • 谁在托举Agent?阿里云抢滩Agent Infra新赛道
  • 安装 docker compose v2版 笔记250731