C语言随笔集

2024-04-26 20:20
文章标签 语言 随笔集

本文主要是介绍C语言随笔集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意 strlen 和 sizeof 的区别

  • strlen计算的是第一个 ‘\0’ 前面的字符的个数
  • sizeof计算的是占用的内存空间的大小只和定义时有关
  • C语言中,输出double类型(双精度)和float(单精度)时, 编译器默认精确到小数点后六位输出
    默认输出的是6位小数,不足6位,以0补齐,超过6位按四舍五入截断。
  • 字符串数组在内存中存储,不管大端还是小端, 都是首个字符先存储,ASII值转换成二进制存储相应的比特位即可

C语言的本质是操作内存

内存分配的方式:

  • 1.定义变量时,由操作系统根据变量的类型在栈区分配
  • 存储类型 数据类型 变量名;
  • 2.程序员使用malloc手动在堆区分配

C语言变量的数据类型:

基本类型:

字符类型       char       %c      1B
短整型          short      %d      2B
整型               int        %d      4B
长整型           long      %ld     32位:4B 64位:8B
长长整型       long long   %lld   8B
单精度浮点型      float      %f       4B
双精度浮点型      double    %lf       8B
多精度浮点型      long double   %llf     32位:12B 64位:16B      
枚举类型          enum

构造类型:

数组
结构体            struct
共用体(联合体)   union

指针类型:

作用:
决定从他保存地址开始,能操作几个字节--------------->操作空间的大小

空类型:

void
void*

存储类型:

  • const 用来修饰变量时,表示只读变量 const int a =10;
  • a的值不能修改
  • const 修饰指针时:
const* 的位置关系
  • 1.const在的左边,表示修饰的是p
const int *p;
int const *p;
不能通过指针p修改指向空间的内容
但是指针的指向是可以修改的
  • 2.const在*的右边,表示修饰的是p
int * const p;
指针的指向不能修改
但是允许通过指针修改指向空间的内容
  • 3.*的左右两边都有const 说明都不能修改
const int * const p;
  • static关键字有两个作用:
1.延长局部变量的生命周期------------->从最近的{}结束至整个程序结束
2.限制作用域:static修饰的变量或者函数只能在当前文件中访问;
  • extern
声明一个函数或者变量在其他的.c文件中定义;
如果一个.c文件中需要使用另外一个.c文件中的变量或者函数;
需要在第一个.c文件中使用extern声明;
  • register
register修饰的是一个寄存器类型的变量,被执行的效率高;
CPU取数据的优先级(寄存器 > 高速缓存(cache)> 内存)
但是CPU的寄存器的个数是有限的
所以,把所有的变量都定义成寄存器变量是不现实的--------->实际开发时,一般不用
注意:register修饰的变量是不能取地址的;
  • volatile
防止编译器优化
要求CPU每次取数据都必须在内存上取
使用场景:
1.中断状态的寄存器
2.多线程访问同一个变量
  • auto
声明一个变量时自动类型
定义局部变量时不写存储类型,默认的都是自动类型非自动类型的变量:
全局变量
static修饰的局部变量

分文件编程:

.c源文件:存放函数的定义;.h头文件:存放函数的声明和类型的定义;mai

这篇关于C语言随笔集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938564

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用